• 검색 결과가 없습니다.

OpenGL 프로젝트

N/A
N/A
Protected

Academic year: 2023

Share "OpenGL 프로젝트"

Copied!
13
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

OpenGL 프로젝트

< animate the fire >

팀명 Basis

20051441 김수영

20051559 양자경

20051664 차미나

(2)

CONTENTS

 목적 및 개요

 프로젝트 소개

 소스분석

 결과보고

 실행화면 (1),(2)

 프로젝트 후기

(3)

목적 및 개요

 그래픽 프로그래밍에 대한 이해 .

 OpenGL 에 관한 이해 .

 전체적으로 깊이 있는 학습 유도 .

 개인 능력 확인 및 향상 .

 수업 내용의 응용 학습 유도 .

 팀 프로젝트 적응 및 팀원간의 유대감형성

 개발환경 )

WindowsXP, Microsoft Visual C++ 6.0

(4)

프로젝트 소개

 animate the fire 은 OpenGL 을 사용하여 모닥

불을 피우는 모습을 표현한 작품이다 .

(5)

소스분석

 // 타이머 정보 . 성능 다른 컴퓨터들 사이에서 프레임 동일 유지를 위해 ,,

 extern float fTime, fDeltaTime;

 // Current window dimensions.

 extern GLsizei g_w, g_h;

 #ifndef NOEXTENSION

 extern HWND g_hwnd;

 #endif

 #include "FirePart.h"

 #ifndef NOEXTENSION

 // 메시지창 호출 함수

 bool Splash()

 {

(6)

소스분석

 return MessageBox(NULL,

 " \" \" : rotate/stop camera\n"

 " ENTER : stop fire animation\n"

 " ESC : put water on the fire\n"

 "\n"

 "Enjoy it :-) Hufo / N.A.A.\n"

 ,szAppName

 ,MB_OKCANCEL | MB_ICONWARNING) == IDOK;

 return True;

 }

 #endif

 bool Init() // 윈도우 초기화 함수 뒤에 OpenGL 초기화 위해 불려짐

 {

 glMatrixMode(GL_PROJECTION); // projection 모드로 설정하여

 glLoadIdentity(); // GL Matrix 초기화한다 .

(7)

소스분석

 float x = (float)g_w/(float)g_h; // Correct the viewing ratio of the window in the X axis.

 if (x>XSTD)

 gluOrtho2D( -x, x, -1, 1 );// Reset to a 2D screen space.

 else

 gluOrtho2D( -XSTD, XSTD, -XSTD/x, XSTD/x ); // Reset to a 2D screen space.

 x0=x;

 // Reset model view matrix stack.

 glMatrixMode( GL_MODELVIEW );

 glLoadIdentity(); // modelview 모드 설정후 Matrix 초기화

 glCullFace(GL_FRONT); // 앞면만 그려지도록 컬링 모드 설정

 glDepthFunc(GL_LESS);

 glBlendFunc(GL_SRC_ALPHA,GL_ONE); // 반투명 텍스쳐 위해 블렌딩 모드 지정

(8)

소스분석

 for (int i=0;i<9;++i)

 {

 CylColor[i].r=CylBColor.r*CylShad[i];

 CylColor[i].g=CylBColor.g*CylShad[i];

 CylColor[i].b=CylBColor.b*CylShad[i];

 }

 TFire=0.0;

 TVit=1.0;

 FireInit(); // initialise fire

 return true; // 모든 것이 잘 동작한다면 , return 은 true

 }

(9)

소스분석

 #ifndef NOEXTENSION

 static float secTime=fTime;

 static int nf=0;

 if (fTime-secTime>=1.0)

 { // aff framerate

 char buf[256];

 sprintf(buf,"%s - %g fps",szAppName,nf/(fTime-secTime));

 SetWindowText(g_hwnd,buf);

 secTime=fTime;

 nf=0;

 }

 #endif

 TFire+=fDeltaTime*TVit;

 CalcFire(TFire,fDeltaTime*TVit); // 불을 움직이게 함 .

 glClear( GL_COLOR_BUFFER_BIT

(10)

결과보고

 GL Matrix 초기화 >>>

 modelview 모드 설정후 Matrix 초기화하여 앞 면만 그려지도록 컬링 모드 설정 , 반투명 텍스쳐 위 해 블렌딩 모드 지정

 불을 움직이게 한다 .

CalcFire(TFire,fDeltaTime*TVit);

(11)

실행화면

 그림 (1) 실행 초기 화면

(12)

실행화면

 그림 (2) 모닥불꺼지는 모습

(13)

프로젝트 후기

 그저 결과물만 보기에는 정말 간단한 프로그램

이다 . 하지만 게임이나 영화에서나 보던 컴퓨

터 그래픽으로 처음으로 직접 제작해 보고 그 원

리와 구조를 알게 된 것은 값진 수확이라고 생각

한다 .

참조

관련 문서

19의거 전후의 모순 된 사회 현실에 대해 개혁을 꾀하려는 ‘ 혁명 의식’그리고 올바른 역사 인식을 통 한 민중에 대한 ‘ 사랑 의식’등은 우리 현대시사에서 매우

환원과 같은 과학원리가 숨어 있다는 것이 신기했고, 교과서로만 보던 과학 개념을 직접 손으로 하고 눈으로 보니 까 실감이 낫다.. 이런 실험을 하는

 OpenGL is an acronym for Open Graphics Library5.  OpenGL Architecture

◎ 지난 시간에 구상한 휴대용 정수기(라이프스트로우)를 바탕으로 나만의 라이프스트로우를 직접 제작해 보고 오염된 물을 정수해 보자... 라이프스트로우의

나.. 이를 통해 해파리에 방사선을 쐬어주면 콜라겐이 추출되고 그 콜라겐을 의료용으로 사용할 수 있는 것을 알게 되었다. 하지만 우리는 방사선을 사용하지

통제도가 1이상이면 통제도가 상대적으로 강한 편으로 그 공간에서 통제도가 강하다는 것은 그 공간 주변으로 직접 연결되는 공간의 수가 많은 대신 직접

정OO : 학생들이 그러한 자료를 접하면 앞으로 공부하게 될 내용에 필요한 자료를 조사하는 이유 를 스스로 알게 되고, 그 자체가 프로젝트 수업이 되니 자료를

하지만 그만큼 원(元) 군인들에게는 치욕스런 싸움터였기에 책임 있는 자의 보고 는 좀처럼 나오지 않았다. 자신의 아버지와 형이 어떤 곳에서 어떻게 죽어갔는가 하는