12 opengl과 - sangjiit.sangji.ac.kr/~3d/ppt/cg/12.pdf · 2017. 5. 16. · opengl과 gui 01 glui를...
TRANSCRIPT
-
OpenGL과 GUI
01 GLUI를 사용한 GUI
02 MFC를 사용한 GUI
12
-
GLUI의 주요 Control 항목들의 구현 결과 모음
2
GLUI를 사용한 GUI 01
-
GLUI Library 설치
3
GLUI를 사용한 GUI 01
-
GLUI Library 환경설정-I
4
GLUI를 사용한 GUI 01
-
GLUI Library 환경설정-II
5
GLUI를 사용한 GUI 01
-
GLUI Library 환경설정-III
6
GLUI를 사용한 GUI 01
-
glui.h File의 Error 발생 시 처리 방법
7
GLUI를 사용한 GUI 01
코드 12-1
class GLUIAPI GLUI_CommandLine : public GLUI_EditText { public: typedef GLUI_EditText Super; enum { HIST_SIZE = 100 }; #ifdef _MSC_VER // Explicit template instantiation needed for dll template class GLUIAPI std::allocator; template class GLUIAPI std::vector; #endif std::vector hist_list; int curr_hist; int oldest_hist; int newest_hist; bool commit_flag; public: ......
Original glui.h에서 Class 밖으로 이동시켜야 할 부분
-
glui.h File의 Error 발생 시 처리 방법
8
GLUI를 사용한 GUI 01
코드 12-2
#ifdef _MSC_VER // Explicit template instantiation needed for dll template class GLUIAPI std::allocator; template class GLUIAPI std::vector; #endif class GLUIAPI GLUI_CommandLine : public GLUI_EditText { public: typedef GLUI_EditText Super; enum { HIST_SIZE = 100 }; std::vector hist_list; int curr_hist; int oldest_hist; int newest_hist; bool commit_flag; public: ......
Original glui.h에서 Error 부분을 Class 밖으로 이동시킨 결과
-
GLUI를 사용하여 Teapot을 제어하기 위한 GUI 구현 결과
9
GLUI를 사용한 GUI 01
코드 12-3
-
GLUI_Master_Object:Create_glui_subwindow의 Prototype
10
GLUI를 사용한 GUI 01
GLUI:set_main_gfx_window의 Prototype
-
GLUI_Rotation::GLUI_Rotation의 Prototype
11
GLUI를 사용한 GUI 01
-
GLUI_Rotation::set_spin의 Prototype
12
GLUI를 사용한 GUI 01
GLUI_Column::GLUI_Column의 Prototype
-
Translation Control의 4가지 유형(Type)
13
GLUI를 사용한 GUI 01
-
GLUI_Translation::GLUI_Translation의 Prototype
14
GLUI를 사용한 GUI 01
-
GLUI_Translation::set_speed의 Prototype
15
GLUI를 사용한 GUI 01
Button의 유형(Type)
Button의 유형(Type)
-
New Project – MFC Application
16
MFC를 사용한 GUI 02
(A) Visual Studio C++ 2010
-
New Project – MFC Application
17
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012
-
MFC Application Wizard – MFCApplication1
18
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFC Application Wizard – MFCApplication1 : Application Type
19
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFC Application Wizard – MFCApplication1 : User Interface Features
20
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFC Application Wizard – MFCApplication1 : Advanced Features
21
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFC Application Wizard – MFCApplication1 : Generated Classes
22
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Solution Explorer
23
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Solution Explorer – Header Files – stdafx.h
24
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View – CMFCApplication1Dlg->Add Variables…
25
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Add Member Variable Wizard
26
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Add Member Variable Wizard
27
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View
28
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View – CMFCApplication1Dlg -> Class Wizard
29
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : MFC Class Wizard
30
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : MFC Class Wizard
31
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View - OnSize
32
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
함수 OnSize(...)에 입력할 소스 코드
33
MFC를 사용한 GUI 02
코드 12-4 VERIFY(wglMakeCurrent(m_hDC, m_hRC));
GLResize(cx, cy);
VERIFY(wglMakeCurrent(NULL, NULL));
-
MFCApplication1 : Class View – CMFCApplicatioin1Dlg -> Add Function...
34
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Add Member Function Wizard
35
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View - GLResize
36
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
함수 GLResize(int cx, int cy)에 입력할 소스 코드
37
MFC를 사용한 GUI 02
코드 12-5 GLfloat Aspect;
if(cy == 0) cy = 1;
glViewport(0, 0, cx, cy);
Aspect = (GLfloat)cx/(GLfloat)cy;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, Aspect, 1.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
-
MFCApplication1 : MFC Class Wizard
38
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View - OnCreate
39
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
함수 OnCreate(...)에 입력할 소스 코드
40
MFC를 사용한 GUI 02
코드 12-6 int nPixelFormat; m_hDC =::GetDC(m_hWnd); static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 24, 0,0,0,0,0,0, 0,0, 0,0,0,0,0, 32, 0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; nPixelFormat = ChoosePixelFormat(m_hDC, &pfd); VERIFY(SetPixelFormat(m_hDC, nPixelFormat, &pfd)); m_hRC = wglCreateContext(m_hDC); VERIFY(wglMakeCurrent(m_hDC, m_hRC)); wglMakeCurrent(NULL, NULL);
-
MFCApplication1 : Class View - OnDestroy
41
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
함수 OnDestroy()에 입력할 소스 코드
42
MFC를 사용한 GUI 02
코드 12-7 wglDeleteContext(m_hRC);
::ReleaseDC(m_hWnd, m_hDC);
-
MFCApplication1 : Add Member Function Wizard
43
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
MFCApplication1 : Class View - GLRenderScene
44
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
함수 GLRenderScene(void)에 입력할 소스 코드
45
MFC를 사용한 GUI 02
코드 12-8 glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glPushMatrix();
glEnable(GL_DEPTH_TEST);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glShadeModel(GL_SMOOTH);
glLoadIdentity();
gluLookAt(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
glutWireTeapot(20.0);
glPopMatrix();
glFlush();
-
MFCApplication1 : Class View - Class View - OnPaint
46
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010
-
함수 OnPaint()에 입력할 소스 코드
47
MFC를 사용한 GUI 02
코드 12-9 wglMakeCurrent(m_hDC, m_hRC);
GLRenderScene();
SwapBuffers(m_hDC);
wglMakeCurrent(m_hDC, NULL);
-
MFCApplication1 구현 결과
48
MFC를 사용한 GUI 02
(B) Visual Studio C++ 2012 (A) Visual Studio C++ 2010