컴퓨터그래픽스 소프트웨어

Similar documents
<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D315FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B0B3B0FC2E >

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드]

chapter2.hwp

PowerPoint 프레젠테이션

04_오픈지엘API.key

Open GL

Microsoft PowerPoint - lecture2-opengl.ppt

OpenGL 프로그래밍 가이드 : OpenGL 1.2 공식 학습 가이드 제3판

(Microsoft PowerPoint - FZBDPQDCSHAN.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - 13prac.pptx

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드]

Microsoft PowerPoint - lecture4-ch2.ppt

Microsoft PowerPoint - lecture3-ch2.ppt

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/8) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft Word - cg09-midterm.doc

Microsoft Word - cg09-final-answer.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap01-C언어개요.pptx

BMP 파일 처리

슬라이드 1

슬라이드 1

(Microsoft PowerPoint - JXQEUPXIEBNZ.ppt [\310\243\310\257 \270\360\265\345])

슬라이드 1

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint 프레젠테이션

Microsoft Word - cg07-midterm.doc

2005CG01.PDF

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint - chap11-포인터의활용.pptx

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

Open GL

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

슬라이드 1

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft Word - cg12-midterm-answer

Microsoft PowerPoint - chap06-2pointer.ppt

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

Microsoft PowerPoint - 06-Body Data Class.pptx

슬라이드 1

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당

쉽게 풀어쓴 C 프로그래밍

1

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint Presentation

歯Lecture2.PDF

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

API 매뉴얼

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint D View Class.pptx

Microsoft PowerPoint - lecture11-ch4

Microsoft Word - cg08-final-answer.doc

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

OCW_C언어 기초

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

슬라이드 1

Microsoft PowerPoint - 권장 사양

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - Java7.pptx

MPEG-4 Visual & 응용 장의선 삼성종합기술원멀티미디어랩

교재

컴퓨터그래픽스 기본요소

17장 클래스와 메소드

PowerPoint Presentation

PowerPoint 프레젠테이션

Open GL


설계란 무엇인가?

KNK_C_05_Pointers_Arrays_structures_summary_v02

JVM 메모리구조

Windows 10 General Announcement v1.0-KO

Chapter #01 Subject

PowerPoint Presentation

C 프로그램의 기본

PowerPoint Presentation

윤성우의 열혈 TCP/IP 소켓 프로그래밍

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

OpenGL 프로그래밍 가이드 제4판

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

0503중간고사.dvi

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

(Microsoft PowerPoint - CNVZNGWAIYSE.ppt [\310\243\310\257 \270\360\265\345])

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

슬라이드 1

Microsoft PowerPoint - Chapter 1-rev

Microsoft PowerPoint - lecture11-ch4.ppt

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

01이국세_ok.hwp

Transcription:

Video & Image VIPLProcessing Lab. 2014-1 Myoung-Jin Kim, Ph.D. (webzealer@ssu.ac.kr)

목차 1 래스터그래픽스및벡터그래픽스 2 컴퓨터그래픽스소프트웨어의유형 3 OpenGL 프로그래밍

래스터그래픽스영상 래스터그래픽스영상이란? 래스터 : CRT 의래스터 주사 (raster scan) 방식에서사용된용어 N x x X 사각형격자좌표형태의픽셀배열로표현됨 디지털카메라, 스캐너등을통해입력한영상, MS Paint나 Photoshop과같은영상편집기를이용하여만든영상 N y Y y f(x, y) TIFF, BMP, JPG 등의파일 형식으로저장 교재관련부분 : 46~47 쪽

래스터그래픽스영상 래스터그래픽스영상의특성 색표현의정밀도 : 각픽셀당색을표현하는데사용되는비트수에의해결정됨 영상의크기 : 영상의가로픽셀수 세로픽셀수로표현 영상을저장하기위한메모리양은영상의크기및색표현의정밀도에의해결정됨 그림을확대해도더세밀한그림을얻을수는없음 래스터영상 (300 200) 8 배확대래스터영상 교재관련부분 : 46~47 쪽

벡터그래픽스영상 벡터그래픽스영상이란? 벡터 (vector) : 크기와방향을동시에나타내는값 벡터그래픽스 : 수학방정식을기반으로점, 직선, 곡선, 다각형등을표현하는방법 Adobe Illustrator, CorelDRAW 등의그래픽스에디터로제작 3dsMax, Maya 등의 3차원그래픽스패키지에서도벡터방식으로물체를설계함 SVG, PDF, EPS, WMF, DXF 등의파일 형식 교재관련부분 : 46~47 쪽

벡터그래픽스영상 벡터그래픽스영상의특성 영상을저장하는데필요한메모리양은영상의크기가아니라그래픽스기본요소의수에의해결정됨 영상을확대해도화질이떨어지지않음 사진과같은영상을표현하기에는적절하지않음 래스터화및렌더링을통해래스터영상을만들어디스플레이함 벡터영상 8 배확대벡터영상 교재관련부분 : 46~47 쪽

목차 1 래스터그래픽스및벡터그래픽스 2 컴퓨터그래픽스소프트웨어의유형 3 OpenGL 프로그래밍

컴퓨터그래픽스패키지 특수목적패키지 응용분야에맞는그림을생성하기위한그래픽스패키지 CAD 패키지 : 건축, 기계, 전자회로등의제품설계 페인트패키지 : 래스터그림이나사진등을제작하거나편집 3차원모델링및애니메이션 : 3ds Max, Maya 등 범용그래픽스 API 전문프로그래머가 C/C++, Java 등의프로그래밍언어에서그래픽스함수를사용할수있게하는그래픽스라이브러리 장면의설계및렌더링작업을처리하기위한최적화된함수를제공함 교재관련부분 : 47~50 쪽

그래픽스 API 의역할 그래픽스응용프로그램 그래픽스 API 도형정의 속성지정 조명설정 기하변환 뷰잉 장치관리자장치관리자장치관리자장치관리자 교재관련부분 : 47~50 쪽

범용그래픽스 API 의유형 저수준그래픽스 API 그래픽기본요소및그속성지정, 기하변환, 뷰잉등장면을정의하여컴퓨터화면에표시하는일련의과정을지시하는함수들을제공 프로그래머는이함수들을이용하여장면을구성하고, 이를화면에그리기위한세부적인처리과정을하나하나프로그램으로작성 GL, OpenGL, DirectX 등 교재관련부분 : 47~50 쪽

범용그래픽스 API 의유형 고수준그래픽스 API 장면묘사를위주로하는기능을제공 다양한모형 ( 큐브, 다각형, 재질, 카메라, 광원등 ) 을제공 기존모형을새로운모형으로쉽게변형할수있게함 모형들로구성된객체들을계층적으로조직화하여장면을구성함 고수준그래픽스 API의예 Open Inventor : OpenGL에기반을둔객체지향 3D 그래픽스 API VRML(Virtual-Reality Modeling Language) Java 3D 교재관련부분 : 47~50 쪽

그래픽스 API 의표준화 CORE GKS PHIGS Hierarchical grouping 개념도입 ACM SIGGRAPH (1977) ISO 7942 (1984) ISO 9592 (1988) Scene Graph 개념 GL SGI (1984) OpenGL SGI (1992) Open Inventor ISO 14772-1 (1997) VRML ISO 19775-1 (2004) X3D Java Java3D 웹환경 교재관련부분 : 47~50 쪽

범용그래픽스 API 의유형 GKS(Graphical kernel System) 유럽에의해주도. 2차원위주. 이후 GKS-3D로발전 파일출력 기본요소수준에서서술한가상레벨 (Virtual Level) 저장 기본요소의위치좌표, 속성, 가시성, 변환정보를저장 PHIGS(Programmer's Hierarchical Interactive Graphics System) 미국에의해주도. CAD 개념반영 3차원모델링 (Modeling), 가시화 (Viewing) 등에주안점 상관관계를포함한물체의집합 = 구조체 (Structure) 구조체관통 (Traversal) 에의한드로잉 현변환행렬 ( 現, CTM, Current Transformation Matrix) 개념 파일출력 기본요소에관한정보 + 응용프로그램레벨에서기본요소사이의관계 CSG의불리언연산, 로봇팔의객체계층구조저장교재관련부분 : 47~50쪽

컴퓨터그래픽스이론 2 가지구성요소 모델링 (What to Draw 렌더링 (How to Draw 모델링 장면내부물체를정의하는작업 선분의끝점, 다각형의정점을정의 렌더링 정의될물체를그려내기 와이어프레임렌더링, 솔리드렌더링

컴퓨터그래픽스이론 2 가지구성요소 모델링 (What to Draw 렌더링 (How to Draw 도깨비 (Total Game Visual) http://cafe.naver.com/on4ever/798

목차 1 래스터그래픽스및벡터그래픽스 2 컴퓨터그래픽스소프트웨어의유형 3 OpenGL 프로그래밍

OpenGL 개요 OpenGL 이란? Silicon Graphics Inc. 의그래픽워크스테이션에 GL(Graphics Library) 이라는그래픽스루틴들을제공 GL을다양한워크스테이션에서활용할수있도록하드웨어에독립적인버전인 OpenGL을개발 SGI, DEC, IBM, Apple, Microsoft 등과함께 OpenGL Architecture Review Board(OpenGL ARB) 를구성하여 OpenGL을유지 관리 저수준절차적 API : 장면을렌더링하기위해요구되는정확한단계를프로그래머가정확하게규정 교재관련부분 : 50 쪽

OpenGL 개요 OpenGL 저수준 API 장면을묘사하는것이아니라구체적프러시저를호출 cf. DirectX from Microsoft: 호환성결여 하드웨어와거의직접연관 ( 하드웨어성능을최대한발휘 ) 드라이버소프트웨어에비해서는상대적으로고수준함수 드라이버소프트웨어 OpenGL Low Level C Library Graphic Subsystem Open Inventor High Level Library

OpenGL 관련라이브러리 라이브러리구성요소 GL(OpenGL Core Library) 렌더링기능을제공하는함수라이브러리 GLU(OpenGL Utility Library) GL 라이브러리도우미 GL 함수로작성 ( 약 50 여개의함수 ) 다각형분할, 투상, 2 차원곡면등고급기능 GLUT(OpenGL Utility Toolkit) 사용자입력을받아들이거나화면윈도우를제어하기위한함수 윈도우운영체제기능과의인터페이스

OpenGL 관련라이브러리 OpenGL 기본라이브러리 OpenGL의주라이브러리 기본도형그리기, 변환, 조명및렌더링등의함수를포함 Microsoft Windows의경우 opengl32.lib로제공되며, gl.h라는헤더파일을사용 기본라이브러리에서제공되는함수들에는 gl, 상수에는 GL_ 이라는접두사가붙음 glbegin(gl_lines); glclear(gl_color_buffer_bit); 교재관련부분 : 51 쪽

OpenGL 관련라이브러리 OpenGL 유틸리티 (GLU) 라이브러리 프로그래머가보다편리하게프로그램을만들수있도록보다높은수준의그리기루틴들을제공하는라이브러리 뷰잉및투영행렬의준비, 곡선및곡면표현및렌더링등 Microsoft Windows의경우 glu32.lib로제공되며, glu.h라는헤더파일을사용 GLU에서제공되는함수들에는 glu 라는접두사가붙음 glulookat(20.0, 10.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0); 교재관련부분 : 51 쪽

OpenGL 관련라이브러리 윈도입출력을위한라이브러리 OpenGL은장치독립적인라이브러리이며, 특정윈도시스템을위한기능은해당윈도시스템을위한라이브러리가필요함 Microsoft Windows : WGL 인터페이스루틴사용 헤더파일 : windows.h X Window 시스템의경우 GLX, 애플시스템의경우 AGL 루틴사용 윈도시스템에의존적임 교재관련부분 : 51 쪽

OpenGL 관련라이브러리 윈도시스템독립적인터페이스라이브러리 GLUT(OpenGL Utility Toolkit) 라이브러리 GLAux를대체하여임의의윈도시스템과상호작용할수있는루틴제공 glut32.lib 라이브러리파일및 glut.h 헤더파일을사용 함수에는 glut 라는접두사를사용 freeglut 라이브러리 더이상유지보수가되고있지않은 GLUT를대신할수있는라이브러리 freeglut32.lib 라이브러리파일및 freeglut.h 헤더파일을사용 교재관련부분 : 51 쪽

OpenGL 관련라이브러리 GLUT(OpenGL Utility Toolkit) 라이브러리 윈도우기능 : 프로그램실행에필요한창 (Window) 을관리 콜백기능 : 프로그램실행중발생하는사용자입력을처리 GLUT 윈도우기능콜백기능초기화관리 함수명 glutinit() glutinitwindowposition() glutinitwindowsize() glutinitdisplaymode() glutsetwindowtitle() glutcreatewindow() glutreshapewindow() glutinitpostredisplay() glutswapbuffers() 기능설명윈도우운영체제와세션연결윈도우위치설정윈도우크기설정디스플레이모드설정윈도우타이틀설정새로운윈도우생성크기변경에따른윈도우조정현윈도우가재생되어야함을표시현프레임버퍼변경

OpenGL 관련라이브러리 OpenGL 패키지구성 파일명폴더위치출처 opengl32.dll C:\Windows\System32 (syswow64) MS Windows opengl32.lib opengl.h C:\Program Files\Microsoft Visual Studio 12.0\VC\Lib C:\Program Files\Microsoft Visual Studio 12.0\VC\Include\GL MS Visual Studio 2013 MS Visual Studio 2013 glu32.dll C:\Windows\System32 (syswow64) MS Windows glu32.lib glu.h C:\Program Files\Microsoft Visual Studio 12.0\VC\Lib C:\Program Files\Microsoft Visual Studio 12.0\VC\Include\GL MS Visual Studio 2013 MS Visual Studio 2013 glut32.dll C:\Windows\System32 (syswow64) Download glut32.lib freeglut32.lib glut.h freeglut.h C:\Program Files\Microsoft Visual Studio 12.0\VC\Lib C:\Program Files\Microsoft Visual Studio 12.0\VC\Include\GL Download Download

OpenGL 관련라이브러리 GLUT

GLUT 윈도우제어 55 y 120 x 400(window width) glutinitwindowposition (120, 55) 350(window high) glutinitwindowsize (400, 350)

GL 의 Viewport( 뷰포트 ) 설정 400(window width) glinitviewport(80, 90, 330, 320) 320 (high) 400(window high) y 90 330(width) 원점 80 x

GL 과 GLUT 의화면좌표 window width GLUT 화면좌표계 x y Top left window high y GL 화면좌표계 x Bottom right

OpenGL 관련라이브러리 Review 라이브러리 헤더파일 접두사 opengl32.lib gl.h gl glu32.lib glu.h glu glaux.lib glaux.h aux glut32.lib glut.h glut 교재관련부분 : 51 쪽

OpenGL 의자료형 OpenGL 자료형 C 언어대응자료형 접미사 GLbyte 8비트정수 b GLshort 16비트정수 s GLint, GLsizei 32비트정수 i GLfloat, GLclampf 32비트실수 f GLdouble, GLclampd 64비트실수 d GLubyte, GLboolean 8비트부호없는정수 ub GLushort 16비트부호없는정수 us GLuint, GLenum, GLbitfield 32비트부호없는정수 ui 교재관련부분 : 55 쪽

OpenGL 의함수형태 return_type <lib_prefix>functionname<arg_count><arg_type>{v} (<arguments>); return_type : 함수를실행한뒤되돌려받는데이터형 <lib_prefix> : 함수접두사 <arg_count> : 함수가갖는인수의수 <arg_type> : 인수의데이터형 {v} : 인수가벡터인경우첨가 glcolor3f(1.0, 0.0, 0.0); GLfloat col[ ] = {1.0, 0.0, 0.0}; glcolor3fv(col); 교재관련부분 : 54 쪽

OpenGL 프로그램의골격 #include... GLfloat... void init( ) {... } void drawingrtn( ) {... } void main( ) {... } 헤더파일나열 전역변수및상수, 매크로, 함수원형등의선언부 초기화루틴 콜백함수 장면그리기, 윈도크기변경, 마우스 / 키보드이벤트등 윈도설정, 콜백함수지정,

OpenGL 프로그램의골격 헤더파일 #include <cmath> // C/C++ 표준라이브러리헤더파일 #include <gl/gl.h> // OpenGL 기본라이브러리헤더파일 #include <gl/glu.h> // GLU 헤더파일 #include <gl/glut.h> // GLUT 헤더파일 #include <cmath> // C/C++ 표준라이브러리헤더파일 #include <gl/glut.h> // GLUT 헤더파일

소스코드 2-1 : OpenGLSample.cpp #include <gl/glut.h> #pragma comment(linker, /SUBSYSTEM:WINDOWS ) #pragma comment(linker, /ENTRY:mainCRTStartup ) void init( ) 콘솔대신자체창을이용하여응용프로그램동작 { 프로그램의시작주소를함수 main( ) 으로지정...... } void drawingrtn( ) {...... } void main(int argc, char** argv) {...... }

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); void glutinit(int *argc, char **argv); glutinitwindowposition(50, 100); GLUT 라이브러리초기화 glutinitwindowsize(400, 300); glutcreatewindow( An Example OpenGL Program ); } init(); glutdisplayfunc(drawingrtn); glutmainloop();

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowposition(50, 100); void glutinitdisplaymode(unsigned int mode); glutinitwindowsize(400, 300); 디스플레이모드초기화 glutcreatewindow( An Example OpenGL Program ); GLUT_SINGLE : 단일버퍼사용 GLUT_RGB : RGBA 모드를사용 init(); glutdisplayfunc(drawingrtn); glutmainloop(); }

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowposition(50, 100); glutinitwindowsize(400, 300); glutcreatewindow( An void glutinitwindowposition(int Example OpenGL x, Program ); int y); 초기윈도위치지정 init(); (x, y) : 디스플레이좌상픽셀이위치하는화면좌표 glutdisplayfunc(drawingrtn); glutmainloop(); }

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowposition(50, 100); glutinitwindowsize(400, 300); glutcreatewindow( An Example OpenGL Program ); void glutinitwindowsize(int width, int height); 초기윈도크기지정 init(); width : 윈도의폭 glutdisplayfunc(drawingrtn); height : 윈도의높이 glutmainloop(); }

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowposition(50, 100); glutinitwindowsize(400, 300); glutcreatewindow( An Example OpenGL Program ); } int glutcreatewindow(char* name); init(); 윈도생성 glutdisplayfunc(drawingrtn); name : 생성된윈도의이름 ( 제목막대에표시 ) glutmainloop();

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowposition(50, 100); glutinitwindowsize(400, 300); void glutdisplayfunc(void (*func)(void)); glutcreatewindow( An Example OpenGL Program ); 현재윈도의디스플레이콜백함수등록 func : 디스플레이함수의포인터 init(); glutdisplayfunc(drawingrtn); glutmainloop(); }

소스코드 2-1 : OpenGLSample.cpp void main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowposition(50, 100); glutinitwindowsize(400, 300); glutcreatewindow( An Example OpenGL Program ); void glutmainloop(void); GLUT의이벤트처리루프에진입 init(); 발생된이벤트에따라콜백함수호출 glutdisplayfunc(drawingrtn); glutmainloop(); }

소스코드 2-1 : OpenGLSample.cpp void init( ) { glclearcolor(1.0, 1.0, 1.0, 0.0); glmatrixmode(gl_projection); gluortho2d(0.0, void glclearcolor(glclampf 200.0, 0.0, 150.0); red, } GLclampf green, void drawingrtn( ) GLclampf blue, { GLclampf alpha); 색버퍼를지울때사용하는값지정 } void main(int argc, char** argv) { }

소스코드 2-1 : OpenGLSample.cpp void init( ) { glclearcolor(1.0, 1.0, 1.0, 0.0); glmatrixmode(gl_projection); gluortho2d(0.0, 200.0, 0.0, 150.0); } void drawingrtn( 투영 ) 방식지정 ( 제6장 2차원뷰잉 ) { } void main(int argc, char** argv) { }

소스코드 2-1 : OpenGLSample.cpp 클리핑윈도 y y 1 ymax (x 1, y 1 ) xmin O ymin x 1 xmax x 뷰포트 세계좌표 glmatrixmode(gl_projection); gluortho2d(xmin, xmax, ymin, ymax);

소스코드 2-1 : OpenGLSample.cpp void drawingrtn( ) { glclear(gl_color_buffer_bit); glcolor3f(1.0, void glclear(glbitfield 0.0, 0.0); mask); glbegin(gl_line_loop); 지정된버퍼를지우기값으로지움 glvertex2i(40, mask : 40); 지울버퍼를지정하는비트마스크 glvertex2i(160, 40); glvertex2i(160, 110); glvertex2i(40, 110); glend( ); glflush( ); }

소스코드 2-1 : OpenGLSample.cpp void drawingrtn( ) { glclear(gl_color_buffer_bit); glcolor3f(1.0, 0.0, 0.0); glbegin(gl_line_loop); glvertex2i(40, 40); glvertex2i(160, 40); glvertex2i(160, 110); glvertex2i(40, 110); glend( ); 빨강직사각형을그림 glflush( ); }

소스코드 2-1 : OpenGLSample.cpp void drawingrtn( ) { glclear(gl_color_buffer_bit); glcolor3f(1.0, 0.0, 0.0); glbegin(gl_line_loop); glvertex2i(40, 40); glvertex2i(160, 40); glvertex2i(160, 110); glvertex2i(40, void glflush(void); 110); glend( ); OpenGL 명령의대기큐에있는명령들을실행 glflush( ); }

소스코드 2-1 : OpenGLSample.cpp void drawingrtn( ) { glclear(gl_color_buffer_bit); glcolor3f(1.0, 0.0, 0.0); glbegin(gl_line_loop); glvertex2i(40, 40); glvertex2i(160, 40); glvertex2i(160, 110); glvertex2i(40, 110); glend( ); glflush( ); }

OpenGL 의진화 그래픽스하드웨어발전에맞추어새로운버전으로진화 OpenGL 1.0 (1992) OpenGL 2.0 (2004) GLSL(OpenGL Shading Language) OpenGL 3.0 (2008) 디프리케이션 (Deprecation) 모델도입 ( 상위호환성을위한권고 - 사라질내용알림 ) ex) 텍스쳐의 border( 테두리 ) 기능사라짐 OpenGL 4.4 (2013) http://www.opengl.org/wiki/history_of_opengl

OpenGL 의진화 그래픽스파이프라인의진화 고정기능 (fixed-function) 파이프라인 응용프로그램이설정할수있는고정된개수의파라미터에의해제어되는동작을하는처리단계로구성되는그래픽파이프라인의버전 유연성및혁신 프로그램가능 (programmable) 파이프라인 꼭짓점, 조각 (fragments) 의처리및이들과관련된데이터 ( 예를들면텍스처좌표 ) 가프로그래머에의해지정되는셰이더 (shader) 프로그램에의해제어되는동작모드 GLSL : C-스타일의문장으로표현되는언어

정리하기 1 2 3 벡터그래픽스영상 vs. 래스터그래픽스영상 벡터그래픽스영상 : 수학방정식을기반으로점, 직선, 곡선등을표현하여그림을구성 래스터그래픽스영상 : 사각형격자좌표형태의픽셀배열로그림을표현 OpenGL : Silicon Graphics 사의 GL을바탕으로다양한컴퓨터에서활용할수있도록개발한저수준절차적그래픽스 API OpenGL의주요라이브러리 기본라이브러리 (GL) : 기본도형그리기, 변환, 조명및렌더링함수를제공 GLU 라이브러리 : 보다높은수준의그리기루틴들을제공 WGL, GLX, AGL 등 : 특정윈도시스템의입출력을위한라이브러리 GLUT : 임의의윈도시스템과상호작용할수있는윈도독립적함수들을제공