41
OpenGL 시시시시

OpenGL 시작하기

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: OpenGL  시작하기

OpenGL 시작하기

Page 2: OpenGL  시작하기

차 례 OpenGL ?

특징 / 함수 그룹 / 기능 / 관련 라이브러리 데이터 타입 / 네이밍 규칙

Visual Studio 설정 예제 프로그램 및 설명

Simple Sample : 창 만들기 도형 만들기 : 사각형 그리기

예제 프로그램 및 실행화면 Spring Example Line Example

Page 3: OpenGL  시작하기

OpenGL ?

그래픽 하드웨어를 위한 소프트웨어 인터페이스 점 , 선 , 면 등과 같은 3 차원 요소 비트맵 등의 2 차원 요소의 표현 RGBA 모델과 Indexed Color 모델에 의한 색상 지원 다양한 조명과 쉐이딩의 설정 텍스처 매핑 Antialiasing, 안개효과 , 블랜딩 등의 고급기능

Hardware-independent interface

3D 그래픽 응용프로그램을 만들기 위한 API

Page 4: OpenGL  시작하기

OpenGL 의 특징 그래픽스 시스템 : 블랙 박스로 간주

OpenGL API120 여 함수들클라이언트 - 서버 모델 ( 생성 - 표시 )하드웨어와 윈도우 시스템에 독립적

사용자 프로그램

그래픽스 시스템

입출력장치

함수 호출 출력

데이터 입력

Page 5: OpenGL  시작하기

OpenGL 함수 그룹

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

에러 처리 등

Page 6: OpenGL  시작하기

OpenGL 기능 텍스처 매핑 (texture mapping)

깊이 버퍼 사용 (Z 버퍼링 )

이중 버퍼링 (double buffering)

명암 효과 (lighting effects)

한면의 명암이 다른 효과 (smooth shading)

길감속성 (material properties)

Page 7: OpenGL  시작하기

OpenGL 관련 라이브러리 OpenGL(GL)

OpenGL 을 제어하는 기본적인 함수들

OpenGL Utility Library(GLU)GL 보다 상위 기능 지원 (U = Utility)

OpenGL Extension to the X Window(GLX)

Page 8: OpenGL  시작하기

OpenGL 관련 라이브러리 OpenGL Utility Toolkit(GLUT)

윈도우 시스템과의 인터페이스 (T = Toolkit)

Open InventorObject-oriented toolkit based on OpenGL Interactive three-dimensional graphic library

Page 9: OpenGL  시작하기

OpenGL 데이터 타입suffix

데이터 타입 C 언어 유형 OpenGL 유형

bsifdubusui

8 bit 정수16bit 정수32bit 정수32bit 실수64bit 실수8bit 부호없는 정수8bit 부호없는 정수8bit 부호없는 정수

signed charshortlongfloatdoubleunsigned charunsigned shortunsigned long

GLbyteGLshortGLint, GLsizeiGLfloat, GLclampfGLdouble, GLclampdGLubyte, GLbooleanGLushortGLuint, GLenum, GLbitfield

Page 10: OpenGL  시작하기

함수 네이밍 규칙

< 라이브러리 접두어 >< 루트 명령어 >< 선택적인 인자의 수 >< 선택적인 인자의 타입 >

glColor3f(…)

Gl 라이브러리

루트 명령

인자의 수

인자의 타입

Page 11: OpenGL  시작하기

설정 (Visual Studio)

Visual c++ 에서는 OpenGL 의 기본적인 library 들이 default 로 설치됨

Dynamic Link Library 설치opengl32.dll, glu32.dll, glut32.dll

Window98,Window Me c:\Windows\SystemWindow2000 C:\WINNT\System32Window XP C:\Windows\System32

Page 12: OpenGL  시작하기

설정 (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

Page 13: OpenGL  시작하기

설정 (Visual Studio) (cont)

Page 14: OpenGL  시작하기

설정 (Visual Studio) (cont)

OpenGL 공식 사이트http://www.opengl.orgGlut 다운로드 페이지

http://www.opengl.org/resources/libraries/glut/glut_downloads.html

Page 15: OpenGL  시작하기

Simple Sample

Page 16: OpenGL  시작하기

Simple Sample (cont)

Page 17: OpenGL  시작하기

Simple Sample (cont)

실행 결과

Page 18: OpenGL  시작하기

Simple Sample (cont)

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

Page 19: OpenGL  시작하기

Simple Sample (cont)

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

Page 20: OpenGL  시작하기

Simple Sample (cont)

glutDisplayFunc(RenderScene);출력 콜백 (callback) 함수 설정창이 그려져야 할 때 지정 함수 호출

( 처음 출력시 , 창의 크기 변경시 등에 호출 )

Page 21: OpenGL  시작하기

Simple Sample (cont)

컨텍스트 설정과 프로그램 시작SetupRC() : OpenGL 초기화glutMainLoop();

GLUT 프레임웍 실행프로그램이 종료될 때까지 운영체제에 관련된

메시지 , 키입력 등을 처리

Page 22: OpenGL  시작하기

Simple Sample (cont)

glClearColor(0.0f, 0.0f, 1.0f, 1.0f);창을 지우기 위한 색상 지정프로토타입 :

void glClearColor(GLclampf 적색 , Glclampf 녹색 , Glclampf 청색 , Glclampf 알파값 );

값의 범위 : 0.0 ~ 1.0

Page 23: OpenGL  시작하기

Simple Sample (cont)

glClear(GL_COLOR_BUFFER_BIT);버퍼 내용 삭제가장 최근에 창에 그려진 이미지를 지움

glFlush();실행되지 않은 OpenGL 명령 실행명령 큐의 내용을 모두 실행

Page 24: OpenGL  시작하기

도형 그리기

Page 25: OpenGL  시작하기

도형 그리기 (cont)

Page 26: OpenGL  시작하기

도형 그리기 (cont)

Page 27: OpenGL  시작하기

도형 그리기 (cont)

실행 결과

Page 28: OpenGL  시작하기

도형 그리기 (cont)

glRectf(-25.0f, 25.0f, 25.0f, -25.0f);glColor3f 명령을 통해 색상 설정 후 사용프로토타입 :

void glRectf(Glfloat x1, Glfloat y1, Glfloat x2, Glfloat y2)

Page 29: OpenGL  시작하기

도형 그리기 (cont)

glutReshapeFunc(ChangeSize);창의 크기가 변할 때마다 실행창 크기가 변경될 때마다 좌표를 초기화

Page 30: OpenGL  시작하기

도형 그리기 (cont)

뷰포트 설정 : glViewport(GLint x, GLint y, GLsizei 너비 , Glsizei 높이 )

---------- 250 ----------

----

----

-- 2

50 -

----

----

-

---------- 250 ----------

----

----

-- 2

50 -

----

----

-glviewport(0,0,250,250) glviewport(0,0,125,125)

--- 12

5 ---

--- 125 ---

[ 창 크기 == 뷰포트 크기 ] [ 창 크기 > 뷰포트 크기 ]

Page 31: OpenGL  시작하기

도형 그리기 (cont)

클리핑 영역 설정Void glOrtho(GLdouble left, GLdouble right, GL

double bottom, GLdouble top, GLdouble near, GLdouble far);

직교 좌표계 사용 (glOrtho())left, right : x 축의 최소 , 최대값bottom, top : y 축의 최소 , 최대값near, far : z 축의 최소 , 최대값

Page 32: OpenGL  시작하기

도형 그리기 (cont)

클리핑 영역을 조정하여 종횡비가 맞는 사각형 유지

Page 33: OpenGL  시작하기

도형 그리기 (cont)

glMatrixMode(GL_PROJECTION);투영을 위한 행렬 변환 glOrtho() 이전에 호출

glLoadIdentity();좌표계 초기화glOrtho() 이전에 호출

Page 34: OpenGL  시작하기

Polygon Example

Page 35: OpenGL  시작하기

Spring Example

Page 36: OpenGL  시작하기

Spring Example (cont)

Page 37: OpenGL  시작하기

Spring Example (cont)

Page 38: OpenGL  시작하기

Spring Example (cont)

Page 39: OpenGL  시작하기

Spring Example (cont)

[ 초기 실행 화면 ] [ Up Key 눌렀을 때 ] [ Right Key 눌렀을 때 ]

Page 40: OpenGL  시작하기

Line Example

Spring 예제의 RenderScene() 부분 수정

Page 41: OpenGL  시작하기

Line Example (cont)

[ 초기 실행 화면 ] [ Up Key 눌렀을 때 ]

[ Right Key 눌렀을 때 ]