版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-OpenGL ESOpenGL ES 02 绘制图元 2 矩形-02严格意义上来说,矩形并不是OpenGL ES 的图元。 但是,让面对现实,绘制这些矩形象绘制一个三角形一样非常简单。在本中,把基本的三角形绘制代码转化为绘制矩形。再一次说明,这些渲染是的,但是通过转化(即移动它们)来使它们快速移动。当然,一旦完成了矩形,试图完成一个立方体,完成一个纹理的立方体。本的快速小结及其他用空白画布的 XCode 工程来渲染了一个实心的白色的三角形。为了做到这点,上 个,你创建了一个顶点数组,告诉OpenGL 这些数据并且使用 glVertexPoer() 来格式化。为渲染这个顶点数组定义一个状态,并
2、且使用 glDrawArrays ()来渲染它。,要使用之前的代码,用制作三角形的方法来制作一个矩形。要做到这点,仅仅需要修改一对(组)代码。第一点是显然的,需要 4 点来组成矩形, 而不是原来 3 点的三角形。然后,要告诉OpenGL 用不一样的 glDrawArrays().方法来绘制一个不同的物体。让开始吧。定义矩形的顶点打开之前删除它,中建立的XCode 工程,找到 drawView 函数。注释掉triangleVerti在之后转换的时候还需要用到,并且添加下列代码:,但是不是constGLfloat squareVerti = -1.0, 1.0, -6.0,/ Bottom lef
3、t 1.0, 1.0, -6.0/ Top left-1.0, -1.0, -6.0,/ Bottom right1.0, -1.0, -6.0,/ Top right;这个定义了的矩形。注意,这个矩形的顶点也是逆时针的。然 后,到下面的绘制三角形的代码处,将这些代码都注释掉,回复到开始状态。 所以注释掉三个函数调用的glVertexArray( ) , glEnableCntS e ( ) ,和glDrawArrays ( ) ,并添加以下代码:glVertexPoer(3, GL_FLOAT, 0, squareVerti glEnableCntSe(GL_VERTEX_ARRAY); g
4、lDrawArrays(GL_TRIANGLE_FAN, 0, 4););这三项职能相同,只是功能略有不同。glVertexPoer(3, GL_FLOAT, 0, squareVerti);这个唯一的变化就是告诉OpenGL 使用了不同的顶点设置方案,而不是现在的三角形。glEnableC ntS e()同样是告诉 OpenGL 从顶点数组来绘制(而不是颜色数组或者其他的什么)glDrawArrays(GL_TRIANGLE_FAN, 0, 4);这里有些改变了。在上个,使用GL_TRIANGLES 做用第一个参数,并且使用 3 在第3 个参数里。第 2 个参数。之前是 0,这里也还是 0,
5、因为只包含了矩形的顶点。第一个参数是绘图模式,而且你现在看到两种可能的OpenGL 绘图方式。花时间来现在不同的绘图模式。它们是:GL_PO GL_LINESSGL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN还没有点或线,所以我只介绍最后的三个。在我开始之前,我要提醒你,顶点数组可能包含不止一个三角形,以您只看到一个物体顶点数组,你要知道,不仅限于这一点。GL_TRIANGLES - 这个参数意味着OpenGL 使用三个顶点来组成图形。所以,在开始的三个顶点,将用顶点 1,顶点 2,顶点 3 来组
6、成一个三角形。完成后,在用下一组的三个顶点来组成三角形,直到数组结束。GL_TRIANGLE_STRIP - OpenGL 的使用将最开始的两个顶点出发,然后遍历每个顶点,这些顶点将使用前 2 个顶点一起组成一个三角形。所以 squareVerti68将与 squareVerticies02和 squareVerticies35.生成一个三角形。 squareVerti911将与 squareVerti35 和squareVerti68生成三角形。也就是说,0,1,2 这三个点组成一个三角形,1,2,3 这三个点也组成一个三角形。注意的是, squareVerticies02表示的意思是: s
7、quareVerticies0 x 坐标squareVerticies1 y 坐标squareVerticies2 z 坐标如果我没有说清楚的话,我用下面的例子来说明。GL_TRIANGLE_FAN - 在跳过开始的 2 个顶点,然后遍历每个顶点,让OpenGL 将这些顶点于它们前一个,以及数组的第一个顶点一起组成一个三角形。 squareVerti68将与squareVerticies35 (前一个)和 squareVerticies02(第一个).生成一个三角形。也就是说,同样是 0,1,2,3 这 4 个顶点。在STRIP 状态下是,0,1,2;1,2,3 这 2 个三角形。在 FAN
8、状态下是,2,1,0;3,2,0 这 2 个三角形。这次使用GL_TRIANGLE_FAN ,在显示区域获得一个矩形。点击”Build & Go”,然后你将在屏幕上看到一个白色的矩形(平面)回头看你的顶点数组。设法想像用三角形来绘制一个矩形。OpenGL 就是这样做的。三角形点 1: squareVerticies02三角形点 2: squareVerticies35矩形的左上矩形的左下三角形点 3: squareVerticies68矩形的右下考虑到上述 3 点,一个三角形的OpenGL 的绘制将弥补左下角的一半面积。试想矩形被对角线分割为左上角和右下角。如何通知这两个三角形?OpenGL
9、刚才只绘制了矩形的左半边。三角形点 1: squareVerticies911三角形点 2: squareVerticies68三角形点 3: squareVerticies02矩形的右上矩形的右下,上个点矩形的左上,第一点只使用了一个新的点,OpenGL 可以渲染这个三角形来完成矩形。GL_TRIANGLE_STRIP返回代码,改变glDrawArrays() 的第一个参数由 GL_TRIANGLE_FAN 为GL_TRIANGLE_STRIP:。点击”Build & Go”然后你会获得下面的。让来看看,为什么只是单单修改了下绘制模式,却没有获得一个矩形。OpenGL展示的顶点数组如下:三角
10、形点 1: squareVerticies02三角形点 2: squareVerticies35三角形点 3: squareVerticies68矩形的左上矩形的左下矩形的右下OpenGL 使用了前 3 个点来渲染一个三角形。这个左下的三角形和之前是相同的。三角形点 1: squareVerticies911三角形点 2: squareVerticies68三角形点 3: squareVerticies35矩形的右上矩形的右下,上个点矩形的左下,上 2 个点这个是现在渲染三角形的 3 个点。这个三角形和理想的三角形有 90 度的夹角。提供的顶点的数组不同,可以实现一个正确的 GL_TRIANG
11、LE_STRIP ,如果现在还是做的GL_TRIANGLE_FAN 。必须记住,你的绘制模式必须和你的顶点数组保持一致,否则,就会出现奇怪的效果,就象刚才修改的那样。如果,你坚持使用 GL_TRIANGLE_STRIP ,你只需要修改你的顶点数组,如下:const GLfloat stripSquare = -1.0, -1.0, -6.0,1.0, -1.0, -6.0,-1.0, 1.0, -6.0,1.0, 1.0, -6.0/ bottom left/ bottom right/ top left/ top right;因此,与上述情况,可以看到第一个三角形将形成头三个顶点,产生一个三角形如下:现在,通过指定点右上角顶点( P4) ,一个新的三角地带将形成与左上角工作( P3 )和第二前顶点(P2)这是右下角。新的顶点显示为橙色,绿色和红色如下:结果是,那种方式都可以让生成一个矩形。最终
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能定义与范畴
- 儿童消防安全教育目标
- 获奖表扬话术
- 冷链车辆报废监管管理办法
- 治疗胃食管反流的15种中成药物
- 机器学习与人工智能关系
- 消化内科质控护士年终总结汇报
- 儿科主任质控年终总结汇报
- 国外医患关系现状解析
- 肥厚性心肌病的心理护理
- 静脉采血不良事件分析与改进
- JJF 2216-2025电磁流量计在线校准规范
- 2024-2025学年广东省深圳市福田区六年级(上)期末数学试卷
- 发改价格〔2007〕670号建设工程监理与相关服务收费标准
- 道岔滚轮作用原理讲解信号设备检修作业课件
- 小学师徒结对师傅工作总结
- 廉洁征兵培训课件
- 农业机械行业调研报告
- 金融行业风险控制与投资策略研究
- 北京巿通州区2025届高二数学第一学期期末考试试题含解析
- 幼儿园大班语言活动《新年礼物》课件
评论
0/150
提交评论