opengl 시작하기
DESCRIPTION
OpenGL 시작하기. 차 례. OpenGL ? 특징 / 함수 그룹 / 기능 / 관련 라이브러리 데이터 타입 / 네이밍 규칙 Visual Studio 설정 예제 프로그램 및 설명 Simple Sample : 창 만들기 도형 만들기 : 사각형 그리기 예제 프로그램 및 실행화면 Spring Example Line Example. OpenGL ?. 그래픽 하드웨어를 위한 소프트웨어 인터페이스 점 , 선 , 면 등과 같은 3 차원 요소 비트맵 등의 2 차원 요소의 표현 - PowerPoint PPT PresentationTRANSCRIPT
OpenGL 시작하기
차 례 OpenGL ?
특징 / 함수 그룹 / 기능 / 관련 라이브러리 데이터 타입 / 네이밍 규칙
Visual Studio 설정 예제 프로그램 및 설명
Simple Sample : 창 만들기 도형 만들기 : 사각형 그리기
예제 프로그램 및 실행화면 Spring Example Line Example
OpenGL ?
그래픽 하드웨어를 위한 소프트웨어 인터페이스 점 , 선 , 면 등과 같은 3 차원 요소 비트맵 등의 2 차원 요소의 표현 RGBA 모델과 Indexed Color 모델에 의한 색상 지원 다양한 조명과 쉐이딩의 설정 텍스처 매핑 Antialiasing, 안개효과 , 블랜딩 등의 고급기능
Hardware-independent interface
3D 그래픽 응용프로그램을 만들기 위한 API
OpenGL 의 특징 그래픽스 시스템 : 블랙 박스로 간주
OpenGL API120 여 함수들클라이언트 - 서버 모델 ( 생성 - 표시 )하드웨어와 윈도우 시스템에 독립적
사용자 프로그램
그래픽스 시스템
입출력장치
함수 호출 출력
데이터 입력
OpenGL 함수 그룹
기본 요소 함수 : 점 , 선분 , 다각형 , 문자열 등 속성 함수 : 색 , 선의 두께 , 글자체 등 관측함수 : 합성 카메라 설정 변환 함수 : 회전 , 이동 , 크기 변환 등 객체 변환 입력 함수 : 키보드 , 마우스 등의 입력 처리 제어 함수 : 윈도우 시스템과의 통신 , 초기화 ,
에러 처리 등
OpenGL 기능 텍스처 매핑 (texture mapping)
깊이 버퍼 사용 (Z 버퍼링 )
이중 버퍼링 (double buffering)
명암 효과 (lighting effects)
한면의 명암이 다른 효과 (smooth shading)
길감속성 (material properties)
OpenGL 관련 라이브러리 OpenGL(GL)
OpenGL 을 제어하는 기본적인 함수들
OpenGL Utility Library(GLU)GL 보다 상위 기능 지원 (U = Utility)
OpenGL Extension to the X Window(GLX)
OpenGL 관련 라이브러리 OpenGL Utility Toolkit(GLUT)
윈도우 시스템과의 인터페이스 (T = Toolkit)
Open InventorObject-oriented toolkit based on OpenGL Interactive three-dimensional graphic library
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
함수 네이밍 규칙
< 라이브러리 접두어 >< 루트 명령어 >< 선택적인 인자의 수 >< 선택적인 인자의 타입 >
glColor3f(…)
Gl 라이브러리
루트 명령
인자의 수
인자의 타입
설정 (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
설정 (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
설정 (Visual Studio) (cont)
설정 (Visual Studio) (cont)
OpenGL 공식 사이트http://www.opengl.orgGlut 다운로드 페이지
http://www.opengl.org/resources/libraries/glut/glut_downloads.html
Simple Sample
Simple Sample (cont)
Simple Sample (cont)
실행 결과
Simple Sample (cont)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)사용할 출력모드를 GLUT 라이브러리에 알림GLUT_SING : 싱글 버퍼창 사용GLUT_RGB : RGB 생상모드 사용
Simple Sample (cont)
glutCreateWindow(“Simple”);창을 만드는 GLUT 라이브러리 호출창의 제목표시줄에 타이틀 “ Simple” 표시
Simple Sample (cont)
glutDisplayFunc(RenderScene);출력 콜백 (callback) 함수 설정창이 그려져야 할 때 지정 함수 호출
( 처음 출력시 , 창의 크기 변경시 등에 호출 )
Simple Sample (cont)
컨텍스트 설정과 프로그램 시작SetupRC() : OpenGL 초기화glutMainLoop();
GLUT 프레임웍 실행프로그램이 종료될 때까지 운영체제에 관련된
메시지 , 키입력 등을 처리
Simple Sample (cont)
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);창을 지우기 위한 색상 지정프로토타입 :
void glClearColor(GLclampf 적색 , Glclampf 녹색 , Glclampf 청색 , Glclampf 알파값 );
값의 범위 : 0.0 ~ 1.0
Simple Sample (cont)
glClear(GL_COLOR_BUFFER_BIT);버퍼 내용 삭제가장 최근에 창에 그려진 이미지를 지움
glFlush();실행되지 않은 OpenGL 명령 실행명령 큐의 내용을 모두 실행
도형 그리기
도형 그리기 (cont)
도형 그리기 (cont)
도형 그리기 (cont)
실행 결과
도형 그리기 (cont)
glRectf(-25.0f, 25.0f, 25.0f, -25.0f);glColor3f 명령을 통해 색상 설정 후 사용프로토타입 :
void glRectf(Glfloat x1, Glfloat y1, Glfloat x2, Glfloat y2)
도형 그리기 (cont)
glutReshapeFunc(ChangeSize);창의 크기가 변할 때마다 실행창 크기가 변경될 때마다 좌표를 초기화
도형 그리기 (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 ---
[ 창 크기 == 뷰포트 크기 ] [ 창 크기 > 뷰포트 크기 ]
도형 그리기 (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 축의 최소 , 최대값
도형 그리기 (cont)
클리핑 영역을 조정하여 종횡비가 맞는 사각형 유지
도형 그리기 (cont)
glMatrixMode(GL_PROJECTION);투영을 위한 행렬 변환 glOrtho() 이전에 호출
glLoadIdentity();좌표계 초기화glOrtho() 이전에 호출
Polygon Example
Spring Example
Spring Example (cont)
Spring Example (cont)
Spring Example (cont)
Spring Example (cont)
[ 초기 실행 화면 ] [ Up Key 눌렀을 때 ] [ Right Key 눌렀을 때 ]
Line Example
Spring 예제의 RenderScene() 부분 수정
Line Example (cont)
[ 초기 실행 화면 ] [ Up Key 눌렀을 때 ]
[ Right Key 눌렀을 때 ]