正六面体贴.docVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
正六面体贴

目 录 TOC \o 1-3 \h \u HYPERLINK \l _Toc27168 【设计题目及说明】 PAGEREF _Toc27168 2 HYPERLINK \l _Toc27341 设计需求 PAGEREF _Toc27341 2 HYPERLINK \l _Toc25559 设计分析 PAGEREF _Toc25559 3 HYPERLINK \l _Toc28344 【程序代码】 PAGEREF _Toc28344 3 HYPERLINK \l _Toc30342 【程序流程图】 PAGEREF _Toc30342 9 HYPERLINK \l _Toc5433 【参考文献】 PAGEREF _Toc5433 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))(TextureIm

文档评论(0)

md85173 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档