資源簡介
課堂作業,C++開發的OPENGL立方體,有光照,支持鼠標拖拽和鍵盤按鍵響應,希望對大家有幫助

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
HWND hWnd;
HDC hDC;
HGLRC hRC=NULL; //定義渲染環境
HINSTANCE hInstance; //得到程序的例子
RECT rect;
int sw?=?640;
int sh?=?480;
bool fullscreen??=?1;
GLfloat aspect;
GLfloat xrot; //?X軸旋轉
GLfloat yrot; //?Y軸旋轉
GLfloat?xspeed; //?X軸旋轉速度
GLfloat?yspeed; //?Y軸旋轉速度
GLfloat z=-5.0f; //?移入屏幕的深度
int?????LastXPosLastYPos;
bool?IsLBDown;
bool light; //光源-開/關
bool lp; //L鍵是否按下??
GLfloat?LightAmbient[]= {?0.5f?0.5f?0.5f?1.0f?}; //環境光的值
GLfloat?LightDiffuse[]= {?1.0f?1.0f?1.0f?1.0f?}; //散射光的值
GLfloat?LightPosition[]= {?0.0f?0.0f?2.0f?1.0f?}; //光照位置
GLuint texture[6]; //紋理的存儲空間
#pragma?comment(?lib?“opengl32.lib“?) //?鏈接時使用OpenGL32.lib
#pragma?comment(?lib?“glu32.lib“?) //?鏈接時使用GLu32.lib?
#pragma?comment(?lib?“glaux.lib“?) //?鏈接時使用GLaux.lib
AUX_RGBImageRec?*TextureImage[6]; //為紋理創建存儲空間
//memset(TextureImage0sizeof(void?*)*1);??????????? //將指針設為NULL
AUX_RGBImageRec?*LoadBMP(char?*Filename) //?讀取位圖圖象
{
FILE?*File=NULL; //?文件句柄
if?(!Filename) //?確定文件名已給出
{
return?NULL; //?如果文件名未給出則返回NULL
}
File=fopen(Filename“r“); //?檢測文件是否存在
if?(File) //?文件是否存在?
{
fclose(File); //?關閉文件
return?auxDIBImageLoad(Filename); //?讀取位圖并返回一個指針
}
return?NULL; //如果調用文件失敗則返回NULL
}
int?LoadGLTextures(int?ichar?*FileName) //調用Bitmap并轉換成紋理
{
int?Status=FALSE; //狀態確定
//讀取位圖,檢查錯誤。如果位圖不存在則退出
if?(TextureImage[i]=LoadBMP(FileName))
{
Status=TRUE; //將Status設為TRUE
glGenTextures(1?&texture[i]); //創建一個紋理
//創建經過MipMapped的紋理
glBindTexture(GL_TEXTURE_2D?texture[i]);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_LINEAR);?????//線形過濾
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_LINEAR_MIPMAP_NEAREST);?//MipMapped過濾
gluBuild2DMipmaps(GL_TEXTURE_2D?3?TextureImage[i]->sizeX?TextureImage[i]->sizeY?GL_RGB?GL_UNSIGNED_BYTE?TextureImage[i]->data);
}
if?(TextureImage[i]) //紋理是否存在
{
if?(TextureImage[i]->data) //紋理圖象是否存在
{
free(TextureImage[i]->data); //釋放紋理圖象所占用內存
}
free(TextureImage[i]); //釋放圖象結構
}
return?Status; //返回Status的值
}
void?SceneInit(int?w?int?h)
{
LoadGLTextures(0“pictures/鳴人1.bmp“);
LoadGLTextures(1“pictures/佐助.bmp“);
LoadGLTextures(2“pictures/卡卡西.bmp“);
LoadGLTextures(3“pictures/李洛克.bmp“);
LoadGLTextures(4“pictures/我愛羅.bmp“);
LoadGLTextures(5“pictures/鳴人2.bmp“);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH); //允許平滑著色
glClearColor(?0.0?0.0?1.0?0.5?);
glClearDepth(1.0f); //設置深度緩沖區
glEnable(GL_DEPTH_TEST);????????????????????????????//允許深度測試
glDepthFunc(GL_LEQUAL); //深度測試的類型
glHint(GL_PERSPECTIVE_CORRECTION_HINT?GL_NICEST);??//極好的透視計算
glLightfv(GL_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12952??2007-12-11?12:44??鼠標互動與光照\MouseAndLight\MouseAndLight.cpp
?????文件???????4063??2007-11-05?23:32??鼠標互動與光照\MouseAndLight\MouseAndLight.dsp
?????文件????????551??2007-11-05?21:42??鼠標互動與光照\MouseAndLight\MouseAndLight.dsw
?????文件??????53760??2007-12-11?12:46??鼠標互動與光照\MouseAndLight\MouseAndLight.opt
?????文件???????1246??2007-12-11?12:46??鼠標互動與光照\MouseAndLight\MouseAndLight.plg
?????文件????????359??2007-11-06?20:00??鼠標互動與光照\MouseAndLight\程序說明.txt
?????文件?????196662??2007-11-06?17:24??鼠標互動與光照\MouseAndLight\pictures\佐助.bmp
?????文件?????196662??2007-11-06?17:25??鼠標互動與光照\MouseAndLight\pictures\卡卡西.bmp
?????文件?????196662??2007-11-06?17:24??鼠標互動與光照\MouseAndLight\pictures\我愛羅.bmp
?????文件?????196662??2007-11-06?17:23??鼠標互動與光照\MouseAndLight\pictures\李洛克.bmp
?????文件?????196662??2007-11-06?17:21??鼠標互動與光照\MouseAndLight\pictures\鳴人1.bmp
?????文件?????196662??2007-11-06?17:25??鼠標互動與光照\MouseAndLight\pictures\鳴人2.bmp
?????文件?????547328??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\MouseAndLight.exe
?????文件??????77824??2007-12-11?12:46??鼠標互動與光照\MouseAndLight\Debug\vc60.pdb
?????文件??????10632??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\BuildLog.htm
?????文件????????406??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\MouseAndLight.exe.em
?????文件?????102400??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\vc90.pdb
?????文件??????56674??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\MouseAndLight.obj
?????文件????????472??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\MouseAndLight.exe.em
?????文件????2542592??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\MouseAndLight.pdb
?????文件????????381??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\MouseAndLight.exe.intermediate.manifest
?????文件?????????67??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\Debug\mt.dep
?????文件????8014848??2008-05-27?15:18??鼠標互動與光照\MouseAndLight\MouseAndLight.ncb
?????文件???????5596??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\MouseAndLight.vcproj
?????文件????????891??2008-05-27?15:14??鼠標互動與光照\MouseAndLight\MouseAndLight.sln
????..A..H.??????7168??2008-05-27?15:18??鼠標互動與光照\MouseAndLight\MouseAndLight.suo
?????文件???????1427??2008-05-27?15:18??鼠標互動與光照\MouseAndLight\MouseAndLight.vcproj.LENOVO-03045314.Administrator.user
?????目錄??????????0??2008-05-24?03:20??鼠標互動與光照\MouseAndLight\pictures
?????目錄??????????0??2008-05-24?03:20??鼠標互動與光照\MouseAndLight\Debug
?????目錄??????????0??2008-05-24?03:20??鼠標互動與光照\MouseAndLight
............此處省略4個文件信息
- 上一篇:完成端口IOCP+UDP源碼
- 下一篇:語音識別GMM模型
評論
共有 條評論