資源簡介
可以用OpenGL實現紅旗飄動效果,可以通過改變參數任意折疊效果

代碼片段和文件信息
#include? //?Windows的頭文件
#include
#include? //?引入數學函數庫中的Sin
#include?“glew.h“ //?包含最新的gl.hglu.h庫
#include?“glut.h“ //?包含OpenGL實用庫
#include
#define??xdata?100
#define??ydata?100
float?points[xdata][ydata][3]; //?Points網格頂點數組
//int?wiggle_count?=?0; //?指定旗形波浪的運動速度
GLfloat?hold; //?臨時變量
HDC hDC=NULL; //?窗口著色描述表句柄
HGLRC hRC=NULL; //?OpenGL渲染描述表句柄
HWND hWnd=NULL; //?保存我們的窗口句柄
HINSTANCE hInstance; //?保存程序的實例
BOOL light; //?光源的開/關
BOOL lp; //?L鍵按下了么?
BOOL fp; //?F鍵按下了么?
//為貼圖新加的變量
GLfloat z=-12.0f; //?深入屏幕的距離
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 filter; //?濾波類型
GLuint texture[1]; //?3種紋理的儲存空間
bool keys[256]; //?保存鍵盤按鍵的數組
bool active=TRUE; //?窗口的活動標志,缺省為TRUE
bool fullscreen=TRUE; //?全屏標志缺省,缺省設定成全屏模式
LRESULT CALLBACK?WndProc(HWND?UINT?WPARAM?LPARAM); //?WndProc的定義
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()//?載入位圖(調用上面的代碼)并轉換成紋理
{
int?Status=FALSE;//狀態指示器
????AUX_RGBImageRec?*TextureImage[1];//?創建紋理的存儲空間
memset(TextureImage0sizeof(void*)*1);//?將指針設為?NULL
//?載入位圖,檢查有錯,或位圖不存在的話退出
if(TextureImage[0]=LoadBMP(“Data/moon.bmp“))
{
Status=TRUE;
????????glGenTextures(1&texture[0]);//這里我們要創建3個紋理并將其存入texture[]中
//生成線性濾波紋理
glBindTexture(GL_TEXTURE_2Dtexture[0]);
????????glTexImage2D(GL_TEXTURE_2D?0?3?TextureImage[0]->sizeX?TextureImage[0]->sizeY?0?GL_RGB?GL_UNSIGNED_BYTE?TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_LINEAR); //?線形濾波
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_LINEAR); //?線形濾波
}
if(TextureImage[0])//?紋理是否存在
{
if?(TextureImage[0]->data) //?紋理圖像是否存在
{
free(TextureImage[0]->data); //?釋放紋理圖像占用的內存
}
????free(TextureImage[0]); //?釋放圖像結構
}
return?Status;
}
GLvoid?ReSizeGLScene(GLsizei?width?GLsizei?height) //?重置OpenGL窗口大小
{
if?(height==0) //?防止被零除
{
height=1; //?將Height設為1
}
glViewport(00widthheight); //?重置當前的視口
glMatrixMode(GL_PROJECTION); //?選擇投影矩陣
glLoadIdentity(); //?重置投影矩陣
//?設置視口的大小
gluPerspective(45.0f(GLfloat)width/(GLfloat)height0.1f100.0f);
glMatrixMode(GL_MODELVIEW); //?選擇模型觀察矩陣
glLoadIdentity(); //?重置模型觀察矩陣
}
int?InitGL(GLvoid) //?此處開始對OpenGL進行所有設置
{
????glLightfv(GL_LIGHT1?GL_AMBIENT?LightAmbient); //?設置環境光
????glLightfv(GL_LIGHT1?GL_DIFFUSE?LightDiffuse); //?設置漫射光
????glLightfv(GL_LIGHT1?GL_POSITIONLightPosition); //?設置
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????196662??2010-03-19?10:46??飄動效果\piao\Data\moon.bmp
?????文件?????245853??2010-04-06?16:52??飄動效果\piao\Debug\piao.exe
?????文件??????74373??2010-04-06?16:52??飄動效果\piao\Debug\piao.obj
?????文件?????672768??2010-04-06?16:52??飄動效果\piao\Debug\piao.pdb
?????文件??????????0??2010-03-25?11:44??飄動效果\piao\Debug\piao.sbr
?????文件??????94208??2010-04-06?16:52??飄動效果\piao\Debug\vc60.pdb
?????文件??????18349??2010-04-06?16:52??飄動效果\piao\piao.cpp
?????文件???????3955??2010-03-19?17:07??飄動效果\piao\piao.dsp
?????文件????????533??2010-03-19?08:59??飄動效果\piao\piao.dsw
?????文件??????41984??2010-04-06?16:57??飄動效果\piao\piao.ncb
?????文件??????53760??2010-04-06?16:57??飄動效果\piao\piao.opt
?????文件????????773??2010-04-06?16:52??飄動效果\piao\piao.plg
?????目錄??????????0??2010-03-19?09:06??飄動效果\piao\Data
?????目錄??????????0??2010-04-08?09:19??飄動效果\piao\Debug
?????目錄??????????0??2010-04-06?16:57??飄動效果\piao
?????目錄??????????0??2010-03-19?08:59??飄動效果
-----------?---------??----------?-----??----
??????????????1403218????????????????????16
- 上一篇:聯通考試題庫.zip
- 下一篇:冒險伴侶源碼 外掛源碼
評論
共有 條評論