Microsoft PowerPoint - lecture2-opengl.ppt

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

PowerPoint 프레젠테이션

Open GL

Microsoft PowerPoint - lecture3-ch2.ppt

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

chapter2.hwp

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

1장 윈도우 프로그래밍 들어가기

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

04_오픈지엘API.key

2005CG01.PDF

Microsoft PowerPoint APUE(Intro).ppt

歯Lecture2.PDF

PCServerMgmt7

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

강의10

PowerPoint 프레젠테이션

Microsoft PowerPoint - lecture4-ch2.ppt

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D315FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B0B3B0FC2E >

초보자를 위한 C++

Microsoft Word - cg09-midterm.doc

Microsoft PowerPoint - 04windows.ppt

untitled

BMP 파일 처리

MPLAB C18 C

윈도우즈 프로그래밍

Sena Technologies, Inc. HelloDevice Super 1.1.0

API 매뉴얼

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft PowerPoint - Install Guide[ ].ppt [호환 모드]

DIY 챗봇 - LangCon

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

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>


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

DE1-SoC Board

K_R9000PRO_101.pdf

Microsoft PowerPoint - 13prac.pptx

Dialog Box 실행파일을 Web에 포함시키는 방법

Orcad Capture 9.x

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

chap7.key

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

01-OOPConcepts(2).PDF

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

Week3

슬라이드 1

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Interstage5 SOAP서비스 설정 가이드

Chapter_02-3_NativeApp

KNK_C_05_Pointers_Arrays_structures_summary_v02

K7VT2_QIG_v3

Microsoft Word - cg07-midterm.doc

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

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

Solaris Express Developer Edition

Figure 5.01

lecture4(6.범용IO).hwp

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

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

6주차.key

PowerPoint 프레젠테이션

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

1

¨ìÃÊÁ¡2

PowerPoint 프레젠테이션

KEY 디바이스 드라이버

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 06-Body Data Class.pptx

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

컴퓨터그래픽스 기본요소

슬라이드 1

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

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

Open GL

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

3주차_Core Audio_ key

[ReadyToCameral]RUF¹öÆÛ(CSTA02-29).hwp

KDTÁ¾ÇÕ-1-07/03

10X56_NWG_KOR.indd

PowerPoint 프레젠테이션

vi 사용법

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

컴파일러

PowerPoint 프레젠테이션

Microsoft Word - KSR2014S042

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

API 매뉴얼

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

MFC 프로그래밍

본 강의에 들어가기 전

<31335FB1C7B0E6C7CABFDC2E687770>

슬라이드 1

Transcription:

OpenGL & GLUT OpenGL & GLUT 321190 2007년봄학기 3/9/2007 박경신 OpenGL http://www.opengl.org/ http://www.sgi.com/software/opengl Windows95 이후 OpenGL 이표준으로들어가있음. ftp://ftp.microsfot.com/softlib/mslfiles/opengl95.exe GLUT for Win32 http://www.xmission.com/~nate/glut.html Glut-3.7.6-bin.zip 내려받기 GLUT for LINUX http://www.opengl.org/resources/libraries/glut/ http://rpmfind.net/linux/rpm2html/search.php?query=glut glut-3.7-9.i386.rpm 내려받기 rpm rebuild glut-3.7-9.i386.rpm (as root) 2 Installing OpenGL & GLUT Libraries 를 Visual C++ 의 lib\ 에설치 Opengl32.lib Glu32.lib Glut32.lib Include files 을 Visual C++ 의 include\gl\ 에설치 Gl.h Glu.h Glut.h Dynamically-linked libraries 를 c:\windows\system32 (Windows XP) 에설치 Opengl32.dll Glu32.dll Glut32.dll C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK 3 Compiling OpenGL/GLUT Programs VC++ 실행 프로젝트새로만들기 메뉴에서 File->New->Projects Win32 Console Application 선택 프로젝트이름지정 Linker 에 library files 을지정 메뉴에서 Project->Settings->link->Object/library modules (Project->Properties->Linker->Input->Additional dependencies) opengl32.lib glu32.lib glut32.lib 를넣는다 프로젝트에파일새로만들기 메뉴에서 Project->Add to Project-> Files 파일이름지정 빌드 (build) (F7) 와실행 (execute) (F5) 4

Compiling OpenGL/GLUT Programs LINUX 사용자는 cc 컴파일하거나 makefile 을이용할것 cc 컴파일 %cc I/usr/X11R6/include program.c -o program - L/usr/X11R6/lib lglut lglu lgl lxm lxi lxext lx11 lm lpthread %./program Makefile 을아래와같이만들고, %make CFLAGS = -I/usr/X11R6/include LIBS = -L/usr/X11R6/lib lglut lglu lgl lxm lxi lxext lx11 lm -lpthread program: program.c $(CC) ($CFLAGS) program.c o program $(LIBS) 5 Windows System 윈도우시스템 Microsoft Windows X Window systems 윈도우시스템과 OpenGL 시스템은모두래스터그래픽스시스템임 OpenGL 프로그래밍을하기위해서는 사용윈도우시스템에서제공하는래스터시스템을기반으로윈도우프로그래밍수행 윈도우프로그래밍문맥에서추상적인래스터시스템인 OpenGL 시스템을윈도우시스템에연결 OpenGL에서제공하는함수들을사용하여 3차원그래픽스프로그래밍을수행 원하는 OpenGL 작업이실제로하드웨어를제어하고있는사용윈도우시스템이효율적으로이해할수있는형태로전환 6 Windows Programming Example Win32 Program 작성예 윈도우프로그램작성예 GLUT와 OpenGL 프로그램작성예 윈도우클래스 (window class) typedef struct UINT cbsize; UINT style; WNDPROC lpfnwndproc; int cbclsextra; int cbwndextra; HINSTANCE hinstance; HICON hicon; HCURSOR hcursor; HBRUSH hbrbackground; LPCTSTR lpszmenuname; LPCTSTR lpszclassname; HICON hiconsm; WNDCLASSEX; 메시지 (Message) typedef struct HWND hwnd; UINT message; WPARAM wparam; LPARAM lparam; DWORD time; POINT pt; MSG; 디바이스문맥 (DC, Device Context) GDI (Graphics Device Interface) 7 8

I 9 10 OpenGL/GLUT Program 작성예 OpenGL I 실리콘그래픽스사 (SGI) 가개발한 3 차원그래픽스라이브러리 API 2차원그래픽스는 (z축의값을 0으로처리한 ) 3차원의특수경우로봄 OpenGL 그래픽스함수는프로그래밍언어에독립적인기능으로지정되어있음 C/C++, Java, Fortran, Python 등다수언어와사용가능 OpenGL 은하드웨어에중립적임 No I/O library No specific model loading mechanism No Hardware specific functions (but available as extensions) 11 12

OpenGL and Windowing Toolkits OpenGL is hardware neutral Problems displaying OpenGL scenes in a specific windowing environment Different platforms have different ways to integrate OpenGL with their windowing environment X Window System (GLX) Apple (AGL) Windows (WGL) IBM OS/2 (PGL) 13 OpenGL & GLUT OpenGL consists of commands related to drawing 2D & 3D objects (e.g., draw a triangle, define material properties & texture, etc). Drawing takes place in some sort of window, controlled by an operating system. OpenGL avoids including any sort of functions to create or manipulate windows, or to do other user interface tasks (keyboard/mouse, etc). GLUT (GL Utility Toolkit) provides functions for windowing and interaction. It defines a simple interface that hides the OS-specific details of these tasks. GLUT functions can be used in the same way under Unix, MacOS, and Windows, making GLUT-based programs more portable. 14 GLUT (OpenGL Utility Toolkit) GLUT Program Structure Provides a library of functions for interacting with any screen-windowing system (portable across all PC and workstation OS platforms) Prefixed with glut Supports: Multiple windows for OpenGL rendering Callback driven event processing Sophisticated input devices An idle routine and timers A simple, cascading pop-up menu facility Utility routines to generate various solid and wire frame objects Supports for bitmap and stroke fonts Miscellaneous window management functions 15 16

단순히윈도우를여는프로그램예제 int main(int argc, char *argv[]) glutinit(&argc, argv); glutcreatewindow(argv[0]); glutdisplayfunc(display); glutmainloop(); return 0; void glutinit([int *argc, char **argv) GLUT 와 OpenGL 환경을초기화. 인수에는 main 의인수를그대로건네줌. int glutcreatewindow(char *name) 윈도우를여는함수. 인수 name 은그윈도우의이름이타이틀바에표시됨. void glutdisplayfunc(void (*func)(void)) 인수 func 는열린윈도우내에디스플레이하는 ( 즉, 그림을그리는 ) callback 함수포인터. 윈도우가열리거나다른윈도우에의해숨겨진윈도우가다시디스플레이될때이함수가실행 void glutmainloop(void) GLUT 루프. 이함수의호출로프로그램은이벤트를기다리는상태임. 17 18 윈도우를전부파란색으로칠하는프로그램예제 void init (void) glclearcolor(0.0, 0.0, 1.0, 1.0); int main(int argc, char *argv[]) glutinit(&argc, argv); glutinitdisplaymode(glut_rgba); glutcreatewindow(argv[0]); glutdisplayfunc(display); init(); glutmainloop(); return 0; 19 void glutinitdisplaymode(unsigned int mode) 디스플레이의표시모드를설정. Mode 에 GLUT_RGBA 를지정했을경우는색의지정을 RGB 로사용함을지정. 그밖에인덱스칼라모드 (GLUT_INDEX) 를지정하면효율을향상시킬수있음. void glclearcolor(glclampf R, Glclampf G, Glclampf B, Glclampf A) 윈도우를전부칠할때의색을지정. R, G, B, A 는 0~1 사이의값을가짐. (0, 0, 0, 1) 을지정하면백색의불투명을그림. void glclear(glbitfield mask) 윈도우를전부칠함. Mask 에는전부칠하는버퍼를지정한다. OpenGL 이관리하는화면상의버퍼 ( 메모리 ) 에는 color buffer, depth buffer, stencil buffer, overlay buffer, 등이겹쳐서존재함. GL_COLOR_BUFFER 를지정했을때는컬러버퍼만전부칠해짐. void glflush(void) 이함수는아직실생되지않은 OpenGL 명령을전부실행. 20

OpenGL/GLUT Program 작성예 윈도우내에선을그리는프로그램예제 glbegin(gl_line_loop); glvertex2d(-0.9, -0.9); glvertex2d(0.9, -0.9); glvertex2d(0.9, 0.9); glvertex2d(-0.9, 0.9); glend(); void init (void) /* 변경없음 */ int main(int argc, char *argv[]) /* 변경없음 */ 21 void glbegin(glenum mode) void glend(void) 도형을그리려면, glbegin() 과 glend() 사이에그도형의각정점의좌표치를설정하는함수를둠. Mode에 GL_POINTS, GL_LINES, GL_POLYGON, 등등도형의타입을지정. void glvertex2d(gldouble x, GLdouble y) 이함수는 2 차원의좌표치를설정하는사용. 인수의형태는 Gldouble 임. Float 형태는 glvertex2f(..) 를 int 형태는 glvertex2i(..) 를사용함. 22 윈도우내에도형을전부칠하는프로그램예제 glcolor3d(1.0, 0.0, 0.0); glbegin(gl_polygon); glvertex2d(-0.9, -0.9); glvertex2d(0.9, -0.9); glvertex2d(0.9, 0.9); glvertex2d(-0.9, 0.9); glend(); void glcolor3d(gldouble r, GLdouble g, GLdouble b) 이함수는그림의색을지정. 인수는 GLdouble 형태로, r, g, b에는각각 0~1의범위에서지정함. 인수가 Float 형태는 glcolor3f(..) 를 int 형태는 glcolor3i(..) 를사용함. 23 24

도형의색을정점마다지정하는프로그램예제 glbegin(gl_polygon); glcolor3d(1.0, 0.0, 0.0); // red glvertex2d(-0.9, -0.9); glcolor3d(0.0, 1.0, 0.0); // green glvertex2d(0.9, -0.9); glcolor3d(0.0, 0.0, 1.0); // blue glvertex2d(0.9, 0.9); glcolor3d(1.0, 1.0, 0.0); // yellow glvertex2d(-0.9, 0.9); glend(); OpenGL Syntax Basic OpenGL Syntax Function names are prefixed with gl E.g.: glbegin, glclear, glcopypixels, glpolygonmode Symbolic constants are prefixed with GL and each word is separated with _ E.g.: GL_2D, GL_RGB, GL_CCW, GL_POLYGON, GL_AMBIENT_AND_DIFFUSE Data types are prefixed with GL without any underscore E.g. GLbyte, GLshort, GLint, GLfloat, GLdouble, GLboolean 25 26 References http://www.cosc.brocku.ca/offerings/3p98/course/o pengl/3p98examples/gettingstarted/msvcnetglut.ht ml OpenGL/GLUT installation 27