4.2 引入Triangle Fans(Introducing Triangle Fans)

在新的顶点结构中,中心处将会有一个顶点坐标,这样的话绘制矩形就必须采用四个三角形而不是两个了。我们把新的中心点放置在点(0,0)处。现在打开AirHockeyRenderer.java,并将三角形顶点坐标更新为如下:

//AirHockey2/src/com/airhockey/android/AirHockeyRenderer.java
// Triangle Fan0,     0,
-0.5f, -0.5f,0.5f, -0.5f,0.5f,  0.5f,
-0.5f,  0.5f,
-0.5f, -0.5f,

看到这里,可能你想要问的第一个问题会是,为什么我们仅仅定义了六个顶点坐标?难道我们不是需要对每个三角形定义3个顶点吗?没错,确实是这样,一个三角形需要三个顶点,但是有时候我们可以在多个三角形之间复用一些相同的顶点。现在我们再来看看新定义的顶点结构,为了便于说明每个顶点都有一个独立的编号:

每一条边的两个顶点都在两个三角形之间得到复用,中心顶点在所有的三角形之间得到复用。如果我们需要输入很多相同的顶点,那将会很烦人,所以我们可以告诉OpenGL复用这些重复的点。我们可以在绘制三角形的时候给OpenGL传递triangle fan命令来做到这一点,triangle fan形式绘制可以按如下图进行描述:

triangle fan形式的绘制开始于中心点,并使用接下来的两个顶点绘制第一个三角形,然后后面的每一个顶点将会绘制另外一个三角形,就这样围绕着中心点展开绘制三角形。为了形成一个闭环,我们只需要在定义顶点的时候在顶点数组的最后重复定义顶点数组的第二个顶点坐标即可。
现在需要更新绘制命令,以便OpenGL知道将会使用triangle fan进行绘制,在 onDrawFrame()中按照如下代码更新glDrawArrays():

//AirHockey2/src/com/airhockey/android/AirHockeyRenderer.java
glDrawArrays(GL_TRIANGLE_FAN, 0, 6);

这样的话OpenGL就会以triangle fan的形式进行三角形的绘制,现在运行程序将会得到如下的结果:

现在我们已经以triangle fan的形式重新定义了一个球台桌面,下一节我们将对每个顶点加入代表颜色的第二个属性。

Part I 空气曲棍球 Chapter4 (4.2 Introducing Triangle Fans)相关推荐

  1. Part I 空气曲棍球 Chapter4 Adding Color and Shade)

    由于后面的章节篇幅比较大点,所以我们会把每一章单独分成几篇文章来写(后面将采用这种模式,除非篇幅比较小). 在实际中,每个物体都会有不同的颜色:比如我们的家里面的墙壁,它都是使用同一种颜色进行粉刷的, ...

  2. Part I 空气曲棍球 Chapter4 (4.4 Rendering with the New Color Attribute)

    4.4 使用新的颜色进行渲染(Rendering with the New Color Attribute) 现在我们已经在顶点数据中增加了一个颜色属性数据并且已经更新了相应的顶点着色器及片元着色器, ...

  3. Part I 空气曲棍球 Chapter4 (4.3 Adding a New Color Attribute)

    4.3 增加新的颜色属性(Adding a New Color Attribute) 我们已经通过加入中心点更新了我们桌面顶点结构,现在可以对每个顶点增加一个颜色属性了,现在更新到到整个顶点数组,如下 ...

  4. Part I 空气曲棍球 Chapter4 (4.1 Smooth Shading)

    4.1 平滑着色(Smooth Shading) 在第二章中,我们学习了如何使用uniform类型变量定义要绘制的三角形的颜色,如下图所示: 我们已经知道OpenGL只支持绘制点.线.三角形的命令,如 ...

  5. 《OpenGL ES应用开发实践指南:Android卷》—— 2.1 为什么选择空气曲棍球

    本节书摘来自华章出版社<OpenGL ES应用开发实践指南:Android卷>一 书中的第2章,第2.1节,作者:(美)Kevin Brothaler ,更多章节内容可以访问云栖社区&qu ...

  6. Part I 空气曲棍球 Chapter8(Building Simple Objects)

    我们的空气曲棍球项目已经捣鼓好久了,现在绘制出来的桌面也是呈现出了一个好视角并且配合纹理映射后看起来更好了:然而由于球棍只是一个点所以看起来并不像真正的球棍,你能想象下使用像一个点一样的球棍打球会是什 ...

  7. 空气曲棍球 由哪几部分组成_Excel中的曲棍球运动员数据分析

    空气曲棍球 由哪几部分组成 Congratulations to the USA Women's Hockey team, who won the Olympic gold medal. They b ...

  8. 《OpenGL ES应用开发实践指南:Android卷》—— 2.3 定义空气曲棍球桌子的结构...

    本节书摘来自华章出版社<OpenGL ES应用开发实践指南:Android卷>一 书中的第2章,第2.3节,作者:(美)Kevin Brothaler ,更多章节内容可以访问云栖社区&qu ...

  9. Part I 空气曲棍球 Chapter9(Adding Touch Feedback)

    通过支持触控反馈获得好的用户交互体验是很多应用和游戏的基石,这样会让用户觉得他们能真正使用一些真实的东西,即使用户只是对着空白的屏幕也是如此.一些手机游戏之所以非常流行只是因为增加了一些触控而已:此时 ...

最新文章

  1. R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用multcomp包的glht函数检验组均值之间所有成对对比差异、通过contrast参数自定义对比组进行组间两两方差分析
  2. xfce的panel不显示无线网络解决方案
  3. 基于React和SpringBoot的快速开发模板QuickAdmin
  4. 【转】excel表格导出集锦repeater实用,和普通用法
  5. jfinal mysql 配置文件_JFinal 如何将操作日志存入到数据库中
  6. 完整安卓项目开发过程和一些细节问题
  7. websocket.onmessage回调没反应_Java笔记:反应器模式的简单运用
  8. html与css游戏开发工具,分享15个最佳的HTML/CSS设计和开发框架
  9. 数据库入门级学习(1)
  10. 3Dmax-Vray动画渲染参数预设
  11. [译] SolidWorks的发展历史(1994~2007)
  12. AspNetPager 分页的详细用法(ASP.NET)
  13. 微信小程序实现服务通知 模板消息详解(附源码)
  14. 分享一个CCLE细胞系数据(CCLE数据库不能用了吗?)
  15. 盒子鱼 android4.2.2,BOXFiSH盒子鱼家长
  16. 计算机网络图片大全,心情图片大全
  17. input 禁止弹出默认的键盘处理方法
  18. 18天掌握Java SE jvav梳理总结 从jvav到架构师
  19. MacBookPro的系统偏好设置(包含触控板设置)
  20. discuzx update sitekey.php,Discuz_X3.4重置应用中心密码教程 应用中心密码忘记怎么清除...

热门文章

  1. 足球视频AI(二)——球员与球的目标检测
  2. (十三)python网络爬虫(理论+实战)——IP代理、构建IP代理池
  3. 如何重启java程序jar包_windows下jar包开机自动重启的步骤
  4. 是一个温柔而懂得宽容的女孩子
  5. Rocksdb源码-读调用链路
  6. iOS-融云即时通讯
  7. 网站的背景音乐在服务器上不播放,急急急...博客背景音乐添加后不能播放?老是跳出无法与服务器连接? 爱问知识人...
  8. Asce's Summer Ranking No.7
  9. Unity3d读取GIS数据(ShapeFile格式文件)
  10. 团队领导在团队项目管理中的职责