資源簡介
繪制一個具有真實感的三維場景,其中含有2個三維物體。具有光照,紋理效果,可實現(xiàn)交互式的場景漫游。使用OpenGL,完成從建模、坐標變換到消隱算法、光照模型、面繪制算法、紋理映射的全部過程。

代碼片段和文件信息
#define?WIN32_LEAN_AND_MEAN
#include?
#include? ?
#include? ?
#include? ?
?
#include?????????
#include????????
#include???????
#pragma?comment(?lib?“opengl32.lib“) ?
#pragma?comment(?lib?“glu32.lib“) ?
#pragma?comment(?lib?“glaux.lib“) ?
#define?KEY_DOWN(vk_code)((GetAsyncKeyState(vk_code)?&?0x8000)???1?:?0)
HDC hDC=NULL;
HGLRC hRC=NULL;
HWND hWnd=NULL;
HINSTANCE hInstance;
bool?fullscreen?=?true;?????
GLfloat?speed?=?1.0f;???????
int?SCREEN_WIDTH?=800;???????
int?SCREEN_HEIGHT?=600;
GLuint texture[8]; //?存儲紋理
GLfloat?MAP_SIZE?=?100;?????//地圖的大小
GLfloat?theta?=?0.0f;???????//旋轉(zhuǎn)的角度
GLfloat?viewUp?=?0.0f;??????//向上和向下看的程度
struct?Vector3{
GLfloat?x;
GLfloat?y;
GLfloat?z;
};
Vector3?eyePosition?={0.0f?4.0?0.0f};???
Vector3?viewAtPosition?={0.0f?4.0-1.0};??
LRESULT CALLBACK?WndProc(HWND?UINT?WPARAM?LPARAM);
GLvoid?DrawScene();?????????????????????????????????????
GLvoid?SetViewByMouse();????????????????????????????????????
GLvoid?ReSizeGL(GLsizei?width?GLsizei?height)
{
if?(height==0)
{
height=1; ?
}
glViewport(00widthheight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f(GLfloat)width/(GLfloat)height0.1f1000.0f);?
glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); ?
}
AUX_RGBImageRec?*LoadBMP(char?*Filename) ?
{
FILE?*File=NULL;
if?(!Filename) ?
{
return?NULL; ?
}
File=fopen(Filename“r“);
if?(File)
{
fclose(File);
return?auxDIBImageLoad(Filename);
}
return?NULL;
}
int?LoadGLTextures() //寫這個函數(shù)的時候浪費了最多時間,
//教程上只貼了一個紋理,但是我的紋理有點多,添加多紋理的時候犯了很多錯誤,在同學(xué)的幫助下慢慢改成功了 ?
{
int?Status=FALSE;
AUX_RGBImageRec?*TextureFloor[1]; //??用來保存紋理數(shù)據(jù)
AUX_RGBImageRec?*TextureRight[1];
AUX_RGBImageRec?*TextureLeft[1];
AUX_RGBImageRec?*TextureBack[1];
AUX_RGBImageRec?*TextureBox11[1];
AUX_RGBImageRec?*TextureBox12[1];
AUX_RGBImageRec?*TextureBox21[1];
AUX_RGBImageRec?*TextureBox22[1];
memset(TextureFloor0sizeof(void?*)*1);??????????? //?數(shù)據(jù)內(nèi)容清零
memset(TextureRight0sizeof(void?*)*1);
memset(TextureLeft0sizeof(void?*)*1);
memset(TextureBack0sizeof(void?*)*1);
memset(TextureBox110sizeof(void?*)*1);
memset(TextureBox120sizeof(void?*)*1);
memset(TextureBox210sizeof(void?*)*1);
memset(TextureBox220sizeof(void?*)*1);
//載入位圖?并判斷成功否
if?((TextureFloor[0]=LoadBMP(“Floor.bmp“))&&(TextureRight[0]=LoadBMP(“Right.bmp“))&&(TextureLeft[0]=LoadBMP(“Left.bmp“))&&(TextureBack[0]=LoadBMP(“Left.bmp“))&&(TextureBox11[0]=LoadBMP(“Box11.bmp“))&&(TextureBox12[0]=LoadBMP(“Box12.bmp“))&&(TextureBox21[0]=LoadBMP(“Box11.bmp“))&&(TextureBox22[0]=LoadBMP(“Box22.bmp“)))
{
Status=TRUE; //?成功
glGenTextures(8?&texture[0]);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????49206??2010-12-23?20:46??計算機圖形學(xué)代碼\Box11.bmp
?????文件??????49206??2010-12-23?20:49??計算機圖形學(xué)代碼\Box12.bmp
?????文件??????49206??2010-12-23?21:38??計算機圖形學(xué)代碼\Box22.bmp
?????文件????????766??2005-05-27?23:59??計算機圖形學(xué)代碼\crosshair.cur
?????文件??????39992??2011-01-17?22:40??計算機圖形學(xué)代碼\Debug\main.obj
?????文件????????880??2011-01-17?21:59??計算機圖形學(xué)代碼\Debug\resource.res
?????文件??????82944??2011-01-17?22:51??計算機圖形學(xué)代碼\Debug\vc60.idb
?????文件??????61440??2011-01-17?22:01??計算機圖形學(xué)代碼\Debug\vc60.pdb
?????文件?????258096??2011-01-17?22:40??計算機圖形學(xué)代碼\Debug\viewingSys.exe
?????文件?????372676??2011-01-17?22:40??計算機圖形學(xué)代碼\Debug\viewingSys.ilk
?????文件????1926192??2011-01-17?21:59??計算機圖形學(xué)代碼\Debug\viewingSys.pch
?????文件?????582656??2011-01-17?22:01??計算機圖形學(xué)代碼\Debug\viewingSys.pdb
?????文件?????786486??2010-12-23?19:09??計算機圖形學(xué)代碼\floor.bmp
?????文件?????393270??2010-12-23?20:52??計算機圖形學(xué)代碼\Left.bmp
?????文件??????24969??2011-01-17?22:01??計算機圖形學(xué)代碼\main.cpp
?????文件???????1424??2006-04-04?20:25??計算機圖形學(xué)代碼\resource.aps
?????文件?????????42??2005-05-28?00:01??計算機圖形學(xué)代碼\resource.rc
?????文件?????393270??2010-12-23?17:28??計算機圖形學(xué)代碼\Right.bmp
?????文件???????4090??2005-05-27?23:59??計算機圖形學(xué)代碼\viewingSys.dsp
?????文件????????545??2005-05-27?17:47??計算機圖形學(xué)代碼\viewingSys.dsw
?????文件??????41984??2011-01-17?22:51??計算機圖形學(xué)代碼\viewingSys.ncb
?????文件??????48640??2011-01-17?22:51??計算機圖形學(xué)代碼\viewingSys.opt
?????文件????????909??2006-04-04?19:21??計算機圖形學(xué)代碼\viewingSys.sln
????..A..H.??????9728??2006-04-12?20:33??計算機圖形學(xué)代碼\viewingSys.suo
?????文件???????4681??2006-04-04?19:21??計算機圖形學(xué)代碼\viewingSys.vcproj
?????目錄??????????0??2011-01-17?22:01??計算機圖形學(xué)代碼\Debug
?????目錄??????????0??2011-07-09?10:22??計算機圖形學(xué)代碼
-----------?---------??----------?-----??----
??????????????5183298????????????????????27
............此處省略0個文件信息
評論
共有 條評論