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

Similar documents
Microsoft PowerPoint - lecture2-opengl.ppt

PowerPoint 프레젠테이션

Open GL

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

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

Microsoft PowerPoint - lecture3-ch2.ppt

chapter2.hwp

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

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

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint APUE(Intro).ppt

BMP 파일 처리

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

K_R9000PRO_101.pdf

Sena Technologies, Inc. HelloDevice Super 1.1.0

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Microsoft Word - cg09-midterm.doc

untitled

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D315FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B0B3B0FC2E >

초보자를 위한 C++

컴퓨터그래픽스 기본요소

歯Lecture2.PDF

!K_InDesginCS_NFH

Microsoft PowerPoint - lecture4-ch2.ppt

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

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

04_오픈지엘API.key


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

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

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - 06-Body Data Class.pptx

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

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

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

슬라이드 1

PowerPoint 프레젠테이션

PCServerMgmt7

Microsoft PowerPoint - 13prac.pptx

MPLAB C18 C

2005CG01.PDF

KNK_C_05_Pointers_Arrays_structures_summary_v02

1. 도구개요 CppUnit Testing 소개 CppUnit 는 C++ 용 testing Framework 로 Java 의 JUnit 을 C++ 로구현 C++ 언어에서사용할수있도록개발된 Open Source 프로젝트로, source code 의특정 Module 이의도

PowerPoint 프레젠테이션

Open GL

PowerPoint 프레젠테이션

Interstage5 SOAP서비스 설정 가이드

Tekla Structures 설치

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

chap7.key

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

lecture4(6.범용IO).hwp

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

슬라이드 1

11장 포인터

강의10

<57696E646F7773C8AFB0E6BFA1BCADC0C7204F70656E53534CBCB3C4A12E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

untitled

KEY 디바이스 드라이버

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

adfasdfasfdasfasfadf


vi 사용법

윈도우시스템프로그래밍

Chapter_02-3_NativeApp

Microsoft Word - cg07-midterm.doc

C++ Programming

PowerPoint 프레젠테이션

PRO1_02E [읽기 전용]

슬라이드 1

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Solaris Express Developer Edition

PowerPoint 프레젠테이션

2014밝고고운동요부르기-수정3

2005프로그램표지

금오공대 컴퓨터공학전공 강의자료

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

PowerPoint 프레젠테이션

C++ Programming

DE1-SoC Board

Microsoft PowerPoint - chap06-2pointer.ppt

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

API 매뉴얼

Microsoft Word - Network Programming_01.docx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

PowerPoint 프레젠테이션

Microsoft PowerPoint 세션.ppt

Transcription:

OpenGL & GLUT OpenGL & GLUT 321190 2011 년봄학기 3/15/2011 박경신 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++ 의 C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\ 에설치 Opengl32.lib Glu32.lib Glut32.lib Include files을 Visual C++ 의 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\GL\ 에설치 Gl.h Glu.h Glut.h Dynamically-linked libraries를 C:\WINDOWS\system32 (Windows XP) 에설치 Opengl32.dll, Glu32.dll, Glut32.dll 3 Compiling OpenGL/GLUT Programs Visual Studio 2010 VC++ 실행 프로젝트새로만들기 메뉴에서 File->New->Projects Win32 Console Application 선택 프로젝트이름지정 Linker 에 library files 을지정 메뉴에서 Project->Settings->link->Object/library modules (Project->Properties->Linker->Input->Additional dependencies) opengl32.lib lib glu32.lib lib glut32.liblib 를넣는다 프로젝트에파일새로만들기 메뉴에서 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 OpenGL 실리콘그래픽스사 (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) OpenGL and Windowing Toolkits OpenGL은하드웨어에중립적 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) 7 8

단순히윈도우를여는프로그램예제 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 l id (*func)(void)) 인수 func는열린윈도우내에디스플레이하는 ( 즉, 그림을그리는 ) callback 함수포인터. 윈도우가열리거나다른윈도우에의해숨겨진윈도우가다시디스플레이될때이함수가실행 void glutmainloop(void) GLUT 루프. 이함수의호출로프로그램은이벤트를기다리는상태임. 9 10 윈도우를전부파란색으로칠하는프로그램예제 th> COLOR BIT); void init (void) glclearcolor(0.0, 0.0, 1.0, 1.0); glutinit(&argc, argv); glutinitdisplaymode(glut_rgba); glutcreatewindow(argv[0]); glutdisplayfunc(display); init(); glutmainloop(); return 0; 11 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 명령을전부실행. 12

OpenGL/GLUT Program 작성예 윈도우내에선을그리는프로그램예제 th> COLOR BIT); glbegin(gl_line_loop); glvertex2d(-0.9, -0.9); void init (void) /* 변경없음 */ /* 변경없음 */ 13 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(..) 를사용함. 14 윈도우내에도형을전부칠하는프로그램예제 COLOR BIT) glcolor3d(1.0, 0.0, 0.0); glbegin(gl_polygon); glvertex2d(-09 0.9, -09); 0.9); void glcolor3d(gldouble r, GLdouble g, GLdouble b) 이함수는그림의색을지정. 인수는 GLdouble 형태로, r, g, b에는각각 0~1의범위에서지정함. 인수가 Float 형태는 glcolor3f(..) 를 int 형태는 glcolor3i(..) 를사용함. 15 16

도형의색을정점마다지정하는프로그램예제 COLOR BIT) glbegin(gl_polygon); glcolor3d(1.0, 0.0, 0.0); // red glvertex2d(-09 0.9, -09); 0.9); glcolor3d(0.0, 1.0, 0.0); // green glcolor3d(0.0, 0.0, 1.0); // blue glcolor3d(1.0, 1.0, 0.0); // yellow 17