01 OpenGL 과 Modeling 01 OpenGL API 02 Rendering Pipeline 03 Modeling
01 OpenGL API 1. OpenGL API 설치및환경설정 2. OpenGL API 구조 2
01 1. OpenGL API 설치및환경설정 OpenGL API 의상대적위치 System Memory Graphics Application Graphics API Plotter Graphics Memory Graphics Library Mouse 3 GPU Keyboard
01 1. OpenGL API 설치및환경설정 OpenGL API Download 4
01 1. OpenGL API 설치및환경설정 OpenGL API 설치 5
01 1. OpenGL API 설치및환경설정 Visual Studio 2015 이하버전 - I [ 그림 1-3] New Project 생성을위한환경설정 6 [ 그림 1-2] New Project 생성과정
01 1. OpenGL API 설치및환경설정 Visual Studio 2015 이하버전 - II [ 그림 1-4] New Project 에새로운코드를삽입하기위한과정 7 [ 그림 1-5] 소스코드의 Type 설정및 File 명입력과정
01 1. OpenGL API 설치및환경설정 Visual Studio 2015 이하버전 - III 1 < 표 1-6> 의 [ 코드 1-1] 입력 2 [Build] [Build Solution] 혹은 <Ctrl+Alt+F7> [ 그림 1-6] 소스코드입력을위한대기상태 8
01 1. OpenGL API 설치및환경설정 Visual Studio 2017 Community 9
01 1. OpenGL API 설치및환경설정 Visual Studio 2017 Community 10
01 1. OpenGL API 설치및환경설정 OpenGL API 환경설정 -I 11
01 1. OpenGL API 설치및환경설정 OpenGL API 환경설정 -II 12
01 1. OpenGL API 설치및환경설정 OpenGL API 환경설정 -III 13
01 1. OpenGL API 설치및환경설정 14 OpenGL API 환경설정 -IV : MS Visual Studio 2017 Community Project > Properties Configuration Properties -> Link -> Input >> Additional Dependencies opengl32.lib glut32.lib glu32.lib glaux.lib 등 4 개파일입력 한줄에한개파일만입력 : <Enter> 키이용 Include Directories C:\Program Files (x86)\microsoft Visual Studio\ 2017\Community\VC\Tools\MSVC\14.15.xxx\include\gl Lib Directories C:\Program Files (x86)\microsoft Visual Studio\ 2017\Community\VC\Tools\MSVC\14.15.xxx\lib\x86
01 1. OpenGL API 설치및환경설정 OpenGL API 설치및환경설정확인을위한 Sample Code 코드 1-1 #include <glut.h> #include <glu.h> 15 void MyDisplay( ) { glclear(gl_color_buffer_bit); glbegin(gl_polygon); glvertex3f(-0.5, -0.5, 0.0); glvertex3f(0.5, -0.5, 0.0); glvertex3f(0.5, 0.5, 0.0); glvertex3f(-0.5, 0.5, 0.0); glend( ); glflush( ); } int main( ) { glutcreatewindow("opengl Initialize Test"); glutdisplayfunc(mydisplay); glutmainloop( ); return 0; }
01 2. OpenGL API 구조 OpenGL API 와 OpenGL API 를지원하는 Library 들 16
01 2. OpenGL API 구조 OpenGL API 계층구조 17
01 2. OpenGL API 구조 OpenGL API 를지원하거나연관된 Library 들 18
01 2. OpenGL API 구조 OpenGL 함수의기본적인구조 OpenGL API 의종류에따른함수명의예시 19
01 2. OpenGL API 구조 OpenGL Data Type 20
01 2. OpenGL API 구조 glvertex3fv 함수의 Prototype 21
01 2. OpenGL API 구조 운영체제의종류에따른 OpenGL Library 들 22
01 2. OpenGL API 구조 주로많이사용되는 GLUT 함수들 Window 기능 23
01 2. OpenGL API 구조 glutinit, glutinitwindowposition 함수의 Prototype glutinitwindowsize 함수의 Prototype 24
01 2. OpenGL API 구조 glutinitdisplaymode 함수의 Prototype 25
01 2. OpenGL API 구조 glutsetwindowtitle 함수의 Prototype GlutCreateWindow 함수의 Prototype 26
01 2. OpenGL API 구조 glutreshapewindow 함수의 Prototype glutmainloop 함수의 Prototype 27
01 2. OpenGL API 구조 Window 초기화및관리를위해주로사용되는 GLUT 함수들의사용예시 코드 1-2 int main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (500, 500); glutinitwindowposition (100, 100); glutcreatewindow ( GLUT Sample );... glutmainloop(); 28 } return 0;
01 2. OpenGL API 구조 주로많이사용되는 GLUT 함수들 Callback 기능 29
01 2. OpenGL API 구조 Callback 기능을수행하는 GLUT 함수들의사용예시 30 코드 1-3 #include <windows.h> #include <stdlib.h> #include <stdio.h> #include <glaux.h> #include <glut.h> #include <glu.h> void MyDisplay() {... } void MyReshape() {... } void MyKeyboard() {... } void MyMouse() {... } void MyMotion() {... } int main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (500, 500); glutinitwindowposition (100, 100); glutcreatewindow ( OpenGL Callback Functions );... glutdisplayfunc(mydisplay); glutreshapefunc(myreshape); glutkeyboardfunc(mykeyboard); glutspecialfunc(myspecial); glutmousefunc(mymouse); glutmotionfunc(mymotion); glutmainloop(); return 0; }
02 Rendering Pipeline 1. OpenGL 로배우는 Graphics Pipeline 2. 실시간 (Real-time) Graphics Pipeline 3. OpenGL Rendering Pipeline 31
02 1. OpenGL 로배우는 Graphics Pipeline OpenGL 로배우는 Graphics Pipeline 32
02 2. 실시간 Graphics Pipeline 실시간 (Real-time) Graphics Pipeline 33
02 3. OpenGL Rendering Pipeline OpenGL Rendering Pipeline 34
Modeling 1. Modeling의종류 2. GL Modeling 3. GLU Modeling 4. GLUT Modeling 5. Outline Font를사용한 Symbol Modeling 35
1. Modeling 의종류 Modeling 방법의 3 가지종류에대한구현결과 (A) Wire-frame Modeling (B) Surface Modeling (C) Solid Modeling 36
2. GL Modeling GL Library 로생성할수있는 Primitive 들의종류 37
2. GL Modeling 기하 Primitive 들을생성하기위한매개변수 (Parameter) 들 38
2. GL Modeling 원 (Circle) 을그리기위한 Algorithm 39
2. GL Modeling 점 (Point) 으로생성한 Primitive 코드 1-4 #include <glut.h> #include <math.h> #define Pi 3.1415 40 void MyDisplay( ) { GLfloat Size[2], Angle; glclear(gl_color_buffer_bit); glcolor3f(0.0, 0.0, 0.0); glgetfloatv(gl_point_size_range, Size); glpointsize(size[0] * 10); glbegin(gl_points); for (Angle = 0.0; Angle <= 2.0*Pi; Angle += Pi/20.0) glvertex3f(0.5*cos(angle), 0.5*sin(Angle), 0.0); glend(); glflush(); }
2. GL Modeling glgetfloatv 함수의 Prototype glpointsize 함수의 Prototype 41
2. GL Modeling 다각형 (Polygon) 으로생성한 Primitive 코드 1-5 #include <glut.h> void MyDisplay( ) { glclear(gl_color_buffer_bit); glcolor3f(0.5, 0.4, 0.3); glbegin(gl_polygon); glvertex3f( 0.0, 1.0, 0.0); glvertex3f(-1.0, 0.5, 0.0); glvertex3f(-1.0, -0.5, 0.0); glvertex3f( 0.0, -1.0, 0.0); glvertex3f( 1.0, -0.5, 0.0); glvertex3f( 1.0, 0.5, 0.0); glend(); glflush(); 42 }
2. GL Modeling 정육면체의계층적자료구조 43
2. GL Modeling 오른손좌표계 44
2. GL Modeling Vertex Array 를이용한정육면체 Modeling 의구현결과 코드 1-6 45
2. GL Modeling glfrontface 함수의 Prototype 46
2. GL Modeling glenableclientstate 함수의 Prototype 47
2. GL Modeling glcolorpointer 함수의 Prototype 48
2. GL Modeling glvertexpointer 함수의 Prototype 49
2. GL Modeling gldrawelements 함수의 Prototype 50
3. GLU Modeling Quadrics 의생성을위한함수 코드 1-7 51
3. GLU Modeling gluquadricdrawstyle 함수의 Prototype 52
3. GLU Modeling gluquadricnormals 함수의 Prototype 53
3. GLU Modeling gluquadricorientation 함수의 Prototype 54
3. GLU Modeling GluQuadricTexture 함수의 Prototype 55
3. GLU Modeling glusphere 함수의 Prototype 56 (A) glusphere(obj, 1.0, 5, 5); (B) glusphere(obj, 1.0, 10, 10); (C) glusphere(obj, 1.0, 20, 20);
3. GLU Modeling glucylinder 함수의 Prototype 57 (A) (B) (C) (D) (A) glucylinder(obj, 1.0, 1.0, 2.0, 20, 8); (B) glucylinder(obj, 1.0, 1.0, 2.0, 8, 8); (C) glucylinder(obj, 1.0, 0.3, 2.0, 20, 8); (D) glucylinder(obj, 1.0, 0.0, 2.0, 20, 8);
3. GLU Modeling gludisk 함수의 Prototype 58 gludisk(obj, 0.0, 2.0, 20, 3); gludisk(obj, 0.5, 2.0, 20, 3);
3. GLU Modeling glupartialdisk 함수의 Prototype 59 glupartialdisk(obj, 1.5, 3.0, 26, 13, 0.0, -180); glupartialdisk(obj, 0.0, 3.0, 26, 13, 45, -145);
3. GLU Modeling NURBS 를이용한 Surface Modeling 구현결과 코드 1-8 60
3. GLU Modeling glpointsize, glcolor3ub 함수의 Prototype glubeginsurface 함수의 Prototype 61
3. GLU Modeling glunurbssurface 함수의 Prototype 62
3. GLU Modeling gluendsurface 함수의 Prototype glunewnurbsrender 함수의 Prototype 63
3. GLU Modeling glunurbsproperty 함수의 Prototype 64
3. GLU Modeling glnewlist(s) 함수의 Prototype 65
3. GLU Modeling glendlist, glcalllist(s) 함수의 Prototype 66
4. GLUT Modeling GLUT Library 를이용한 3D Primitive 구현결과 코드 1-9 67
4. GLUT Modeling glutwiresphere 및 glutsolidsphere 함수의 Prototype 68
4. GLUT Modeling glutwiresphere 및 glutsolidsphere 함수의구현결과 (A) glutwiresphere(1.0, 30, 30); (B) glutsolidsphere(1.0, 30, 30); 69
4. GLUT Modeling glutwirecube 및 glutsolidcube 함수의 Prototype 70
4. GLUT Modeling glutwirecube 및 glutsolidcube 함수의구현결과 (A) glutwirecube(1.0); (B) glutsolidcube(1.0); 71
4. GLUT Modeling glutwiretorus 및 glutsolidtorus 함수의 Prototype 72
4. GLUT Modeling glutwiretorus 및 glutsolidtorus 함수의구현결과 (A) glutwiretorus(0.3, 1.5, 20, 20); (B) glutsolidtorus(0.3, 1.5, 20, 20); 73
4. GLUT Modeling glutwirecone 및 glutsolidcone 함수의 Prototype 74
4. GLUT Modeling glutwirecone 및 glutsolidcone 함수의구현결과 (A) glutwirecone(1.0, 1.5, 12, 12); (B) glutsolidcone(1.0, 1.5, 12, 12); 75
4. GLUT Modeling glutwireteapot 및 glutsolidteapot 함수의 Prototype 76 (A) glutwireteapot(1.0); (B) glutsolidteapot(1.0);
4. GLUT Modeling glutwiretetrahedron 및 glutsolidtetrahedron 함수의 Prototype 77 (A) glutwiretetrahedron(); (B) glutsolidtetrahedron();
4. GLUT Modeling glutwireoctahedron 및 glutsolidoctahedron 함수의 Prototype (A) glutwireoctahedron(); (B) glutsolidoctahedron(); 78
4. GLUT Modeling glutwiredodecahedron 및 glutsoliddodecahedron 함수의 Prototype 79 (A) glutwiredodecahedron(); (B) glutsoliddodecahedron();
4. GLUT Modeling glutwireiconsahedron 및 glutsolidicosahedron 함수 의 Prototype (A) glutwireicosahedron(); (B) glutsolidicosahedron(); 80
5. Outline Font 를사용한 Symbol Modeling Alphabet 대문자 (A-Z) 를사용하여구현한 Symbol Modeling 구현결과 Alphabet 소문자 (a-z) 를사용하여구현한 Symbol Modeling 구현결과 81 코드 1-10
5. Outline Font 를사용한 Symbol Modeling 한글자음 ( ㄱ ㅎ ) 을사용하여구현한 Symbol Modeling 구현결과 한글모음 ( ㅏ ㅣ ) 을사용하여구현한 Symbol Modeling 구현결과 82
5. Outline Font 를사용한 Symbol Modeling CreateFont 함수의 Prototype 83
5. Outline Font 를사용한 Symbol Modeling wglusefontoutlines 함수의 Prototype 84
5. Outline Font 를사용한 Symbol Modeling GLYPHMETRICSFLOAT 구조체의 Prototype 85