openGL利用顶点数组旋转立方体以及程序.pptVIP

openGL利用顶点数组旋转立方体以及程序.ppt

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

利用顶点数组旋转立方体1、先利用顶点列表创建一个立方体模型:顶点数组可以把对象的绘制信息封装在一个包含数据结构里,只要几次函数调用就可以绘制多面体对象。因为openGL允许定义包含顶点信息的数据结构(数组),我们只需要向openGL发出请求,openGL只需通过几次函数调用就可以遍历整个数据结构。为了绘制六个正方形,需要为每个正方形指定四个顶点,最终需要指定6*4=24个顶点。但一个立方体其实总共只有八个顶点,要指定24次,就意味着每个顶点其实重复使用了三次,像这样重复烦琐的代码,稍有不慎,即使相同的顶点也可能被指定成不同的顶点了。如果我们定义一个数组,把八个顶点都放到数组里,然后每次指定顶点都使用指针,而不是使用直接的数据,这样就避免了在指定顶点时考虑大量的数据,于是减少了代码出错的可能性。2、使用顶点数组的三个步骤:第一步:激活顶点数组功能;第二步:告诉openGL定点数组的位置和存放格式;第三步:绘制对象。前两步可以看做是初始化过程的一部分,第三步则是显示回调函数的一部分。OpenGL可以使用6种不同类型的数组:顶点、颜色、颜色索引、法向、贴图坐标和边标志位。这6类数组对应于glBegin()和glEnd()之间可以设置的6类不同数据项,而旋转立方体只需要颜色和顶点数组,并把它们设为全局变量。GLfloatvertices[]={-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0};//顶点数组GLfloatcolors[]={0.0,0.0,0.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,1.0,0.0,1.0,1.0,1.0,1.0,0.0,1.0,1.0};//颜色数组必须用自己定义的数据类型向openGL提供立方体的顶点与表面之间的关系,则需要定义一个数组,保存6个面的24个顶点在定点数组里的索引号,并将这个数组定义为全局变量:GLubytecubeIndices[]={0,3,2,1,2,3,7,6,0,4,7,3,1,2,6,5,4,5,6,7,0,1,5,4};即第一个面由索引号为(0,3,2,1)的4个顶点构成,第二个面由索引号为(2,3,7,6)4个顶点构成,以此类推。要注意:顶点的次序必须符合多边形外侧面要求。在显示回调函数里6次调用glDrawElements()函数,每次绘制一个表面:for(i=0;i=6;i++)glDrawElement(GL_POLYGON,4,GL_UNSIGNED_BYTE,cubeIndices[4*i]);当定义好数组并已经初始化顶点数组,每次绘制立方体只需要6次函数调用。如果每个面都是四边形,采用GL_QUADS而不是GL_POLYGON,可以提高绘制速度,只需要一次函数调用:glDrawElements(GL_QUADS,24,GL_UNSIGNED_BYTE,cubeIndices);因为GL_QUADS每四个顶点画一个四边形利用顶点数组旋转立方体程序:#includemath.h#includestdio.h#includestdlib.h#includeGL/glut.h#includegraphics.h#includeconio.hGLfloatvertices[]={-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0};//立方体的顶点数组并设为全局变量GLfloatcolors[]={0.0,0.0,0.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,1.0,0.0,1.0,1.0,1.0,1.0,0.0,1.0,1.0};//颜色数组并设为全局变量GLubytecubeIndices[]={0,3,2,1,2,3,7,6,0,4,7,3,1,2,6,5,4,5,6,7,0,1,5,4};//保存6个面的24个顶点在定点数组里的索引号到一个数组里,或将要使用的顶点的序号保存到一个数组里面staticGLfloattheta[]

文档评论(0)

177****7891 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档