Download presentation
Presentation is loading. Please wait.
1
OpenGL
2
배울 것 그래픽스 표준화 API OpenGL
3
표준화 “주어진 여건에서 최적의 질서를 유지하기 위해, 현존하거나 잠재하는 문제들에 대해, 공유성과 재사용성을 높이기 위한 기반을 확립하는 행위” ISO/IEC JTC1/SC24, Working Group 하드웨어 구조(Architecture) 메타파일 및 인터페이스(Metafile and Interface) 응용프로그램 인터페이스(API, Application Program Interface)
4
그래픽스 표준의 목표 주전산기 독립성(Host Machine Independence)
동일한 프로그램을 가지고서 다양한 모든 하드웨어에서 사용할 수 있어야 한다. 장비 독립성(Device Independence) 동일 기능을 수행하는 입출력 장비의 종류가 달라도 프로그램 명령은 동일해야 한다. 프로그램 언어 독립성(Programming Language Independence) 프로그램 작성에 어떠한 프로그램 언어를 사용해도 된다. 운영자 이식성(Operator Portability) 새로운 프로그램 사용법을 누구라도 쉽게 터득할 수 있어야 한다
5
그래픽스 API 응용프로그램 인터페이스 라이브러리
6
그래픽스 API 고수준 API (High-Level API) 저수준 API (Low-Level API) OpenInventor
VRML Java3D 저수준 API (Low-Level API) OpenGL DirectX
7
고수준 그래픽스 API 장면묘사 언어(Scene Description Language) Camera {
center { } 카메라 중심을 ( )에 위치시키되 direction { } 카메라가 ( )을 바라보게 } Lights { numLights 1 광원의 숫자는 1개 DirectionalLight { 방향성 광원으로 하여 direction { } (0.5, 0.5, 0.5) 방향으로 빛을 비추되 color { } 백색 빛을 발하는 광원 } Background { color { } 배경색은 백색 Group { numObject 2 물체 2개로 이뤄진 그룹 Material {0.0, 0.0, 1.0} 첫 물체를 청색으로 하여 Sphere {2.0} 반지름 2인 원구를 그림 Transform { Translate {1.0, 0.0, 0.0} x축 방향으로 1.0만큼 이동하여 Scale {0.3, 0.3, 0.3} 크기를 x, y, z 방향으로 0.3배로 줄여서 Material {1.0, 0.0, 0.0} 둘째 물체를 적색으로 하여 Sphere {2.0} 반지름 2인 원구를 그림
8
고수준 그래픽스 API 장면 그래프(Scene Graph)
9
VRML #VRML V2.0 utf8 Shape { appearance Appearance {
material Material { } } geometry Sphere { radius 1.2 } Shape { geometry Cylinder { radius 0.3 height 5.0 } Transform { translation children { Shape { appearance Appearance { material Material { } } geometry Cylinder { radius 0.3 height 5.0 } }
10
VRML 장면그래프
11
OpenGL의 위치
12
OpenGL 저수준 API 직접적으로 장면을 묘사할 수 없다. 구체적으로 함수 호출 하드웨어와 직접 연관
13
OpenGL 의 설계 원리 범용성(Generality) 효율성(Performance) 독립성(Orthogonality)
워크스테이션, 수퍼 컴퓨터, 개인용 컴퓨터, 운영체제에 무관 효율성(Performance) 그래픽 하드웨어의 가속 기능을 최대한 발휘 회사마다 서로 다른 기능. 공통적인 부분을 찾아내어 그 성능을 극대화 공통부분이 아닌 것에 대해서는 활성화 또는 비활성화 등 기능 모드를 제공 독립성(Orthogonality) 기능 간의 독립성을 최대한 보장 기능끼리 서로 얽혀 발생하는 오류를 방지 완전성(Completeness) 특정 하드웨어 기능에 대해서는 ARB 확장 형태로 명령어를 제공 다수의 하드웨어가 확장 기능을 지원하면 표준기능으로 변경 소프트웨어적으로라도 실행할 수 있도록 배려 상호 작업성(Interoperability) 그래픽 명령은 A 컴퓨터에서 내리되 실행은 B 컴퓨터에서 클라이언트-서버 모델(Client-Server Model)지원 성능이 낮은 클라이언트 컴퓨터가 고성능 서버를 이용
14
일단, 하드웨어는 3D를 어떻게 그릴까? GPU CPU의 파이프라인 구조와 유사 분업에 의한 동시처리로 속도 극대화
Cf) 컨베이어 벨트
15
여기서 OpenGL은 무얼 하나? 프로세서에 들어가는 상태변수 설정
16
여기서 OpenGL은 무얼 하나? 프로세서에 들어가는 상태변수 설정
17
OpenGL에서 쓰이는 상태변수들 glColor3f(1.0, 1.0, 1.0); glPointSize(0.5);
GL_CURRENT_COLOR 상태변수 값을 (1.0, 1.0, 1.0)으로 설정 다른 명령에 의해 값이 바뀔 때까지 모든 물체를 그릴 때 유효함 glPointSize(0.5); glLineWidth(5); glShadeModel(GL_SMOOTH); glGetFloatv(GL_CURRENT_COLOR, MyColor); glEnable(GL_LIGHTING); glDisable(GL_LIGHTING);
18
OpenGL 함수의 일반적인 모습
19
OpenGL 구성요소 GL: OpenGL Core Library GLU: OpenGL Utility Library
렌더링 기능을 제공하는 함수 라이브러리 GLU: OpenGL Utility Library GL 라이브러리의 도우미 고급기능을 제공하는 함수 다각형 분할, 투상, 2차원 곡면, NURBS GLUT: OpenGL Utility Toolkit 사용자 입력과 화면 윈도우를 제어하기 위한 함수 윈도우 운영체제 기능과의 인터페이스
20
GLUT 윈도우 기능: 프로그램 실행에 필요한 창(Window)을 관리
콜백 기능: 프로그램 실행 중 발생하는 사용자 입력을 처리
21
OpenGL 실습준비 glut-3.7.6-bin+ex.zip을 다운로드 한다. 시작 코드(ex.cpp)를 컴파일 후 실행한다.
glut32.dll은 %WinDir%\System32에, glut32.lib은 $(MSDevDir)\VC??\lib에 glut.h 은 $(MSDevDir)\VC??\include에 각각 복사한다. 예) Visual Studio 2005인 경우, glut32.dll: C:\WINDOWS\system32 glut32.lib: C:\Program Files\Microsoft Visual Studio 8\VC\lib glut.h: C:\Program Files\Microsoft Visual Studio 8\VC\include 시작 코드(ex.cpp)를 컴파일 후 실행한다.
22
11.9(목) 발표 7조 게임의 장르 및 역사 8조 차세대 게임기
Similar presentations