正六面体贴图.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正六面体贴图正六面体贴图

目 录 【设计题目及说明】 2 设计需求 2 设计分析 3 【程序代码】 3 【程序流程图】 9 【参考文献】 12 【设计题目及说明】 设计需求 以3维坐标xyz的原点为正方形体体心绘制一个正方体,任选六张图片,将图片作为纹理贴图映射到旋转的立方体的6个表面上。我选用的图片是一下6个图: 实现的效果图: 具体说明: 导入6张图片,分别读取图片的信息,作为正方体表面的纹理。 将每张图片绑定在正方体表面上,以图片每个像素的颜色填充正方体表面。 使用键盘:“1”暂停正方体旋转,“2”开始旋转,“esc”退出播放。 位图图片存放在data文件夹中。 运行环境需安装opengl库函数。 开发工具:visual C++ 6.0。 设计分析 本次设计的目的是对正六面体进行纹理映射,使用六张不同的图片作为纹理,分别映射到六面体的六个面上。 设计步骤: 创建纹理对象并指定纹理。 指定纹理应用。 启用纹理。 指定纹理坐标。 纹理映射需要建立纹理(u,v)与物体空间坐标(x,y,z的映射关系,也就是把物体空间的x,y,z和,u,v建立等式关系。 【程序代码】 #include windows.h #include gl\GL.h #include gl\GLU.h #include gl\GLAux.h #include stdio.h #include gl\glut.h #pragma comment (lib,glaux) GLfloat xrot=0; GLfloat yrot=0; GLfloat zrot=0; GLuint texture[6]; bool flag = true; void Reshape(int w, int h) { glViewport(0,0,w,h); // 重置当前的视口 glMatrixMode(GL_PROJECTION); glLoadIdentity( ); gluPerspective(45.0f, (GLfloat)w/(GLfloat)h, 0.1f, 100.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() { int Status=FALSE; AUX_RGBImageRec *TextureImage[6]; memset(TextureImage,0,sizeof(AUX_RGBImageRec *)*6); if ((TextureImage[0] = LoadBMP(data/image1.bmp))(TextureImage[1] = LoadBMP(data/image2.bmp)) (TextureImage[2] = LoadBMP(data/image3.bmp))(TextureImage[3] = LoadBMP(data/image4.bmp)) (TextureImage[4] = LoadBMP(data/image5.bmp))(TextureImage[5] = LoadBMP(data/image6.bmp))) { Status=TRUE; glGenTextures(6, texture[0]); // 创建纹理 for (int i=0; i6; i++) { glBindTexture(GL_TEXTURE_2D, texture[i]); glTexImage2D(GL_TEXTURE_2D, 0,

文档评论(0)

enxyuio + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档