1 / 41

OpenGL 시작하기

OpenGL 시작하기. 차 례. OpenGL ? 특징 / 함수 그룹 / 기능 / 관련 라이브러리 데이터 타입 / 네이밍 규칙 Visual Studio 설정 예제 프로그램 및 설명 Simple Sample : 창 만들기 도형 만들기 : 사각형 그리기 예제 프로그램 및 실행화면 Spring Example Line Example. OpenGL ?. 그래픽 하드웨어를 위한 소프트웨어 인터페이스 점 , 선 , 면 등과 같은 3 차원 요소 비트맵 등의 2 차원 요소의 표현

Download Presentation

OpenGL 시작하기

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL 시작하기

  2. 차 례 • OpenGL ? • 특징 /함수 그룹 / 기능 / 관련 라이브러리 • 데이터 타입 / 네이밍 규칙 • Visual Studio 설정 • 예제 프로그램 및 설명 • Simple Sample : 창 만들기 • 도형 만들기 : 사각형 그리기 • 예제 프로그램 및 실행화면 • Spring Example • Line Example

  3. OpenGL ? • 그래픽 하드웨어를 위한 소프트웨어 인터페이스 • 점, 선, 면 등과 같은 3차원 요소 • 비트맵 등의 2차원 요소의 표현 • RGBA 모델과 Indexed Color 모델에 의한 색상 지원 • 다양한 조명과 쉐이딩의 설정 • 텍스처 매핑 • Antialiasing, 안개효과, 블랜딩 등의 고급기능 • Hardware-independent interface • 3D 그래픽 응용프로그램을 만들기 위한 API

  4. 함수 호출 출력 사용자 프로그램 그래픽스 시스템 입출력 장치 데이터 입력 OpenGL의 특징 • 그래픽스 시스템 : 블랙 박스로 간주 • OpenGL API • 120 여 함수들 • 클라이언트-서버 모델(생성-표시) • 하드웨어와 윈도우 시스템에 독립적

  5. OpenGL 함수 그룹 • 기본 요소 함수 : 점, 선분, 다각형, 문자열 등 • 속성 함수 : 색, 선의 두께, 글자체 등 • 관측함수 : 합성 카메라 설정 • 변환 함수 : 회전, 이동, 크기 변환 등 객체 변환 • 입력 함수 : 키보드, 마우스 등의 입력 처리 • 제어 함수 : 윈도우 시스템과의 통신, 초기화, 에러 처리 등

  6. OpenGL 기능 • 텍스처 매핑(texture mapping) • 깊이 버퍼 사용(Z 버퍼링) • 이중 버퍼링(double buffering) • 명암 효과(lighting effects) • 한면의 명암이 다른 효과(smooth shading) • 길감속성(material properties)

  7. OpenGL 관련 라이브러리 • OpenGL(GL) • OpenGL을 제어하는 기본적인 함수들 • OpenGL Utility Library(GLU) • GL 보다 상위 기능 지원 (U = Utility) • OpenGL Extension to the X Window(GLX)

  8. OpenGL 관련 라이브러리 • OpenGL Utility Toolkit(GLUT) • 윈도우 시스템과의 인터페이스 (T = Toolkit) • Open Inventor • Object-oriented toolkit based on OpenGL • Interactive three-dimensional graphic library

  9. OpenGL 데이터 타입

  10. 함수 네이밍 규칙 <라이브러리 접두어><루트 명령어><선택적인 인자의 수><선택적인 인자의 타입> glColor3f(…) 인자의 수 Gl 라이브러리 인자의 타입 루트 명령

  11. 설정 (Visual Studio) • Visual c++에서는 OpenGL의 기본적인 library들이 default로 설치됨 • Dynamic Link Library 설치 • opengl32.dll, glu32.dll, glut32.dll • Window98,Window Me c:\Windows\System • Window2000 C:\WINNT\System32 • Window XP C:\Windows\System32

  12. 설정 (Visual Studio) (cont) • OpenGL Library 설치 • opengl32.lib, glu32.LIB, glut32.lib • C:\Program file\Microsoft Visual Studio\VC98\Lib • Open GL Header 설치 • gl.h, glu.h, glut.h, glaux.h • C:\Program file\Microsoft Visual Studio\ VC98\include\GL

  13. 설정 (Visual Studio) (cont)

  14. 설정 (Visual Studio) (cont) • OpenGL 공식 사이트 • http://www.opengl.org • Glut 다운로드 페이지 • http://www.opengl.org/resources/libraries/glut/glut_downloads.html

  15. Simple Sample

  16. Simple Sample (cont)

  17. Simple Sample (cont) • 실행 결과

  18. Simple Sample (cont) • glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) • 사용할 출력모드를 GLUT 라이브러리에 알림 • GLUT_SING : 싱글 버퍼창 사용 • GLUT_RGB : RGB 생상모드 사용

  19. Simple Sample (cont) • glutCreateWindow(“Simple”); • 창을 만드는 GLUT 라이브러리 호출 • 창의 제목표시줄에 타이틀 “Simple” 표시

  20. Simple Sample (cont) • glutDisplayFunc(RenderScene); • 출력 콜백(callback)함수 설정 • 창이 그려져야 할 때 지정 함수 호출(처음 출력시, 창의 크기 변경시 등에 호출)

  21. Simple Sample (cont) • 컨텍스트 설정과 프로그램 시작 • SetupRC() : OpenGL 초기화 • glutMainLoop(); • GLUT 프레임웍 실행 • 프로그램이 종료될 때까지 운영체제에 관련된 메시지, 키입력 등을 처리

  22. Simple Sample (cont) • glClearColor(0.0f, 0.0f, 1.0f, 1.0f); • 창을 지우기 위한 색상 지정 • 프로토타입 :void glClearColor(GLclampf 적색, Glclampf 녹색, Glclampf 청색, Glclampf 알파값); • 값의 범위 : 0.0 ~ 1.0

  23. Simple Sample (cont) • glClear(GL_COLOR_BUFFER_BIT); • 버퍼 내용 삭제 • 가장 최근에 창에 그려진 이미지를 지움 • glFlush(); • 실행되지 않은 OpenGL 명령 실행 • 명령 큐의 내용을 모두 실행

  24. 도형 그리기

  25. 도형 그리기 (cont)

  26. 도형 그리기 (cont)

  27. 도형 그리기 (cont) • 실행 결과

  28. 도형 그리기 (cont) • glRectf(-25.0f, 25.0f, 25.0f, -25.0f); • glColor3f 명령을 통해 색상 설정 후 사용 • 프로토타입 : void glRectf(Glfloat x1, Glfloat y1, Glfloat x2, Glfloat y2)

  29. 도형 그리기 (cont) • glutReshapeFunc(ChangeSize); • 창의 크기가 변할 때마다 실행 • 창 크기가 변경될 때마다 좌표를 초기화

  30. 도형 그리기 (cont) • 뷰포트 설정 : glViewport(GLint x, GLint y, GLsizei 너비, Glsizei 높이) glviewport(0,0,250,250) glviewport(0,0,125,125) --- 125 --- ---------- 250 ---------- ---------- 250 ---------- --- 125 --- ---------- 250 ---------- ---------- 250 ---------- [ 창 크기 == 뷰포트 크기 ] [ 창 크기 > 뷰포트 크기 ]

  31. 도형 그리기 (cont) • 클리핑 영역 설정 • Void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); • 직교 좌표계 사용 (glOrtho()) • left, right : x축의 최소, 최대값 • bottom, top : y축의 최소, 최대값 • near, far : z축의 최소, 최대값

  32. 도형 그리기 (cont) • 클리핑 영역을 조정하여 종횡비가 맞는 사각형 유지

  33. 도형 그리기 (cont) • glMatrixMode(GL_PROJECTION); • 투영을 위한 행렬 변환 • glOrtho() 이전에 호출 • glLoadIdentity(); • 좌표계 초기화 • glOrtho() 이전에 호출

  34. Polygon Example

  35. Spring Example

  36. Spring Example (cont)

  37. Spring Example (cont)

  38. Spring Example (cont)

  39. Spring Example (cont) [ 초기 실행 화면 ] [ Up Key 눌렀을 때 ] [ Right Key 눌렀을 때 ]

  40. Line Example • Spring 예제의 RenderScene() 부분 수정

  41. Line Example (cont) [ 초기 실행 화면 ] [ Up Key 눌렀을 때 ] [ Right Key 눌렀을 때 ]

More Related