opengl绘制教室大作业源代码wp
更新时间:2023-09-21 09:45:01 阅读量: 工程科技 文档下载
wp.h
#include
//..................................定义变量区............................................................//
//.............................用于场景漫游有关变量........................................// GLfloat xrot=0.0f; // X 旋转量 GLfloat yrot=0.0f; // Y 旋转量 GLfloat x=0.0f; // X 平移量 GLfloat y=0.0f; // Y 平移量 GLfloat z=-40.0f; // 深入屏幕的距离 //.............................用于键盘操作有关变量.......................................// BOOL light=TRUE; // 光源的开/关
BOOL lp; // L键按下了么?
BOOL fp; // F键按下了么?
BOOL TurnOn=FALSE; // 开灯 GLUquadricObj *qobj;
int fantheta=0; // 风扇转过角度
HGLRC hRC=NULL; // 窗口着色描述表句柄
HDC hDC=NULL; // OpenGL渲染描述表句柄
HWND hWnd=NULL; // 保存我们的窗口句柄
HINSTANCE hInstance; // 保存程序的实例
bool keys[256]; // 保存键盘按键的数组
bool active=TRUE; // 窗口的活动标志,缺省为TRUE
bool fullscreen=TRUE; // 全屏标志缺省,缺省设定成全屏模式
//.................................光照材质有关变量......................................//
GLfloat light_Ambient[]= { 0.1f, 0.1f, 0.1f, 1.0f }; // 环境光参数 GLfloat light_Diffuse[]= { 1.0f, 1.0f, 0.45f, 1.0f }; // 漫射光参数 GLfloat light_position[]={0.0,29.9,0.0,1.0}; // 光源位置 GLfloat light_position1[]={20.0,29.9,0.0,1.0};
GLfloat mat_ambient[]={0.05f,0.05f,0.05f,1.0f}; // 材质环境光参数
GLfloat mat_specular[]={0.8,1.0,1.0,1.0}; // 材质镜面光参数
GLfloat mat_shininess[]={5.0};
GLfloat white_light[]={1.0,1.0,1.0,1.0}; // 光 GLfloat no_mat[]= {0.0f, 0.0f, 0.0f, 1.0f}; // 无材质色 GLfloat no_shininess[]= {0.0f}; // 无反光 GLfloat mat_diffuse[]= {1.0f, 1.0f, 1.0f, 1.0f}; // 漫反射 GLfloat diffusion[]={0.521f,0.121f,0.0547f,1.0};
//......................................纹理...........................................................// GLuint texture[6]; // 7种纹理的储存空间
//.....................................时钟有关变量...................................................// GLfloat cx=35.0,cy=15.0,cz=-79.9,radius=5.0; GLfloat hradius=2.0,mradius=3.0,sradius=4.0; GLfloat sangle,mangle,hangle; GLuint second,miniter,hour; char timebuffer[9];
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // WndProc的定义
wp.cpp
#include\
//......................................创建纹理..........................................................// AUX_RGBImageRec *LoadBMP(char *Filename) // 载入位图图象 { FILE *File=NULL; // 文件句柄 if (!Filename) // 确保文件名已提供 { return NULL; // 如果没提供,返回 NULL } File=fopen(Filename,\ // 尝试打开文件 if (File) // 文件存在
么? { fclose(File); // 关闭句柄 return auxDIBImageLoad(Filename); // 载入位图并返回指针 } return NULL; } // 如果载入失败,返回 NULL
int LoadGLTextures() // 载入位图并转换成纹理 {
int Status=FALSE; // 状态指示器 AUX_RGBImageRec *TextureImage[6]; // 创建纹理的存储空间 memset(TextureImage,0,sizeof(void *)*1); // 将指针设为 NULL // 载入位图,检查有无错误,如果位图没找到则退出 Status=TRUE; // 将 Status 设为 TRUE
//...............................创建第一个纹理,地板.......................................// if (TextureImage[0]=LoadBMP(\ {
glGenTextures(1, &texture[0]);// 创建纹理 glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//远处采用线性滤波 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);//近处采用MipMapped滤波 gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);//绑定纹理 }
if (TextureImage[0])//纹理是否存在 { if (TextureImage[0]->data)//纹理图像是否存在 { free(TextureImage[0]->data);//释放纹理图像占用的内存 } free(TextureImage[0]);//释放图像结构
}
//...............................创建第二个纹理,墙.......................................// if (TextureImage[1]=LoadBMP(\ {
glGenTextures(1, &texture[1]); //创建纹理 glBindTexture(GL_TEXTURE_2D, texture[1]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//远处采用线性滤波 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);//近处采用MipMapped滤波 gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[1]->sizeX, TextureImage[1]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[1]->data);//绑定纹理 }
if (TextureImage[1])//纹理是否存在 {
if (TextureImage[1]->data)//纹理图像是否存在 { free(TextureImage[1]->data);//释放纹理图像占用的内存 } free(TextureImage[1]);//释放图像结构 }
//...............................创建第三个纹理,窗户.......................................// if (TextureImage[2]=LoadBMP(\ {
glGenTextures(1, &texture[2]);//创建纹理 glBindTexture(GL_TEXTURE_2D, texture[2]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//远处采用线性滤波 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);//近处采用MipMapped滤波 gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[2]->sizeX, TextureImage[2]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[2]->data);//绑定纹理 }
if (TextureImage[2])//纹理是否存在 { if (TextureImage[2]->data)//纹理图像是否存在 { free(TextureImage[2]->data);//释放纹理图像占用的内存 } free(TextureImage[2]);//释放图像结构
}
//...............................创建第四个纹理,门.......................................// if (TextureImage[3]=LoadBMP(\ {
glGenTextures(1, &texture[3]);//创建纹理 glBindTexture(GL_TEXTURE_2D, texture[3]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//远处采用线性滤波 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);//近处采用MipMapped滤波 gluBuild2DMipmaps(GL_TEXTURE_2D,
3,
TextureImage[3]->sizeX,
TextureImage[3]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[3]->data);//绑定纹理 } if (TextureImage[3])//纹理是否存在 {
}
if (TextureImage[3]->data)//纹理图像是否存在 { free(TextureImage[3]->data);//释放纹理图像占用的内存 }
free(TextureImage[3]);//释放图像结构
//...............................创建第五个纹理,灯.......................................// if (TextureImage[4]=LoadBMP(\ { Status=TRUE; glGenTextures(1, &texture[4]);//创建纹理 glBindTexture(GL_TEXTURE_2D, texture[4]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//远处采用线性滤波 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);//近处采用MipMapped滤波 gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[4]->sizeX, TextureImage[4]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[4]->data);//绑定纹理 }
if (TextureImage[4])//纹理是否存在 { if (TextureImage[4]->data)//纹理图像是否存在 { free(TextureImage[4]->data);//释放纹理图像占用的内存 } free(TextureImage[4]);//释放图像结构 }
正在阅读:
opengl绘制教室大作业源代码wp09-21
新人教版高中思想政治必修2《共产党领导的多党合作和政治协商制度:中国特色的政党制度》精品教案09-21
中建四局华润大冲埋入式柱脚QC - 图文10-20
18年初级会计基础知识04-10
Apgyclf机械生产实习报告 - 图文04-20
论《史记》及之前典籍中的精神圣徒06-08
人民版历史必修二专题一第3课古代中国的商业经济(15) - 图文10-02
精算管理笔记11-25
People learn things better from those at their own level11-18
- 广西房地产中介服务公司名录2018版4664家 - 图文
- 新人教版高中思想政治必修2《共产党领导的多党合作和政治协商制度:中国特色的政党制度》精品教案
- 太昌初中2012-2013学年度第一学期德育工作计划
- 部编版三年级上册语文教学工作总结
- 2017中国历史人文地理(上)期末答案
- 企业党员示范区管理标准 - 图文
- 2014福建电大《民族与宗教》第三次作业
- 三年级奥数年龄问题
- 遵纪守法主题班会主持词
- 新校区 新面貌 新气象 新发展
- 日语听力课心得
- 苏州科联KPD电动平车介绍 - 图文
- 苏州大学物理实验试1
- 人教版三年级数学上册上学期复习(全)
- 船上大副见习作业附加页补充部份
- 11.干燥-填空题-题目
- 息县第六届中小学艺术作品比赛
- 《皮肤性病学基础》期末试题
- 部编版语文二年级下册第二单元测试卷(含答案)
- 2013-2014学年安徽省淮北市五校联考九年级(下)月考数学试卷(四)+