資源簡介
利用OpenGL 實現一個小臺燈實例源代碼
代碼片段和文件信息
#define?WM_TOGGLEFULLSCREEN?(WM_USER+1) //?定義全屏/窗口切換消息
#define?TIMER1 101 //?定義時鐘代號設置為101號
#define?title “第一題“ //?定義窗口標題
#define?CLASSNAME “5DG_OPENGL“ //?定義窗口類名
#define WIDTH 800 //?定義窗口寬度
#define?HEIGHT 600 //?定義窗口高度
#define?BPP 16 //?定義每像素的位數
//?在此處引用程序要求的頭文件:
#include? //?Windows的頭文件
#include? //?OpenGL32庫的頭文件
#include? //?Glu32庫的頭文件
#include?
#include?
//?在此處加入程序要求的庫到鏈接器中:
#pragma?comment(?lib?“opengl32.lib“?) //?鏈接時查找OpenGL32.lib
#pragma?comment(?lib?“glu32.lib“?) //?鏈接時查找glu32.lib
#pragma?comment(?lib?“glaux.lib“)
//?在此處定義與窗口相關的結構體:
typedef?struct?{ //?定義處理鍵盤的結構體
BOOL?keyDown?[256]; //?存儲鍵盤按鍵狀態的數組
}?Keys;
typedef?struct?{ //?定義存儲應用程序實例的結構體
HINSTANCE hInstance; //?應用程序實例
const?char* className; //?應用程序類名
}?Application;
typedef?struct?{ //?定義初始化窗口所需信息
Application* application; //?所屬的應用程序
char* title; //?窗口標題
int width; //?窗口寬度
int height; //?窗口高度
int bitsPerPixel; //?每像素的位數
BOOL isFullScreen; //?是否全屏
}?GL_WindowInit;
typedef?struct?{ //?定義窗口結構體
Keys* keys; //?鍵盤
HWND hWnd; //?窗口句柄
HDC hDC; //?設備描述表
HGLRC hRC; //?繪制描述表
GL_WindowInit init; //?提供Window初始化信息的結構體
}?GL_Window;
//?此代碼模塊中包含的函數的前向聲明:
BOOL?Initialize(GL_Window*?window?Keys*?keys); //?設置你繪制前的初始化值
void?DrawSceneGL(void); //?在這里完成場景的繪制
void?Update(void); //?在此處更新對消息的動作
void?Deinitialize(void); //?在此處做退出前掃尾工作
//?在此處定義全局變量:
GL_Window* OGL_window; //?存儲窗口信息
Keys* OGL_keys; //?存儲按鍵信息
//?在此處定義用戶變量:
GLfloat?angle_X?=?90.0f;
GLfloat?angle_Y?=?0.0f;
GLfloat?angle_Z?=?30.0f;
GLfloat?lampShape_angle_X?=?0.0f;
GLfloat?lampBody_angle_X?=?0.0f;
GLfloat?lamp_angle_X?=?0.0f;
GLUquadric?*quadric;
GLfloat?light0_ambient[]?=?{?1.0f?1.0f?1.0f?1.0f?};
GLfloat?light0_diffuse[]?=?{?1.0f?1.0f?1.0f?1.0f?};
GLfloat?light0_specular[]?=?{?1.0f?1.0f?1.0f?1.0f?};
GLfloat?light0_position[]?=?{?1.0f?1.0f?1.0f?1.0f?};
GLfloat?light1_attenuation?=?0.0f;
GLfloat?light1_ambient[]?=?{?0.9f?0.9f?0.9f?1.0f?};
GLfloat?light1_diffuse[]?=?{?1.0f?1.0f?1.0f?1.0f?};
GLfloat?light1_specular[]?=?{?1.0f?1.0f?1.0f?1.0f?};
void?ResizeWindowGL(int?width?int?height) //?重新設置窗口大小
{
glViewport(0?0?(GLsizei)(width)?(GLsizei)(height)); //?重置當前視口大小
glMatrixMode(GL_PROJECTION); //?切換到投影矩陣模式
glLoadIdentity(); //?重置投影矩陣
gluPerspective(45?(float)width/(float)height?0.1?100); //?設置透視投影
glMatrixMode(GL_MODELVIEW); //?切換到模型視圖矩陣
glLoadIdentity(); //?重置模型視圖矩陣
}
BOOL?ChangeScreenResolution(int?wid
- 上一篇:C語言寫的商品信息管理系統
- 下一篇:TIFF的C++庫
評論
共有 條評論