Presentation is loading. Please wait.

Presentation is loading. Please wait.

OpenGL 시작하기.

Similar presentations


Presentation on theme: "OpenGL 시작하기."— Presentation transcript:

1 OpenGL 시작하기

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

3 OpenGL ? 그래픽 하드웨어를 위한 소프트웨어 인터페이스 Hardware-independent interface
점, 선, 면 등과 같은 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 Utility Library(GLU)
GL 보다 상위 기능 지원 (U = Utility) OpenGL Extension to the X Window(GLX)

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

9 OpenGL 데이터 타입 suffix 데이터 타입 C언어 유형 OpenGL 유형 b s i f d ub us ui
8 bit 정수 16bit 정수 32bit 정수 32bit 실수 64bit 실수 8bit 부호없는 정수 signed char short long float double unsigned char unsigned short unsigned long GLbyte GLshort GLint, GLsizei GLfloat, GLclampf GLdouble, GLclampd GLubyte, GLboolean GLushort GLuint, GLenum, GLbitfield

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 공식 사이트 Glut 다운로드 페이지

15 Simple Sample

16 Simple Sample (cont)

17 Simple Sample (cont) 실행 결과

18 Simple Sample (cont) glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)
GLUT_RGB : RGB 생상모드 사용

19 Simple Sample (cont) glutCreateWindow(“Simple”); 창을 만드는 GLUT 라이브러리 호출

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(); 버퍼 내용 삭제
가장 최근에 창에 그려진 이미지를 지움 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) [ 창 크기 == 뷰포트 크기 ] [ 창 크기 > 뷰포트 크기 ]

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); glLoadIdentity();
투영을 위한 행렬 변환 glOrtho() 이전에 호출 glLoadIdentity(); 좌표계 초기화

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 눌렀을 때 ]


Download ppt "OpenGL 시작하기."

Similar presentations


Ads by Google