由于后面的章节篇幅比较大点,所以我们会把每一章单独分成几篇文章来写(后面将采用这种模式,除非篇幅比较小)。

在实际中,每个物体都会有不同的颜色;比如我们的家里面的墙壁,它都是使用同一种颜色进行粉刷的,但如果我们从不同的角度去看,就会发现有些地方比较明亮有些地方比较暗,问题的关键在于墙壁与环境光的角度问题。我们的大脑使用这些细微的差别进行合成视觉曲线进而表达我们所看到的东西,艺术家们很早就使用这种方式来进行作品了;在这一章节里面,我们将向艺术家们学习,并使用不同的颜色的着色器绘制出不那么单调且更真实的桌面。

在前面一章节中,在把桌面绘制到屏幕之前我们已经做了大量的工作,成功绘制了两个小球、一个分隔线。这里面有很多的准备工作,包括加载着色器、编译着色器及把它们连接成OpenGL程序对象。
    使用OpenGL ES 2.0 的一大好处就是,虽然前面做了很多工作,但是后面将会有很多的代码能够得到复用;虽然接下来还会再写更多的代码,但是之前的很多准备工作中的代码都可以复用;实际上有了前面的准备工作,现在添加颜色和着色器将会简单很多。

接下来,是这一章节的计划:
    1)首先我们将学习如何在每一个顶点定义一个颜色,而不是整个几何体都使用同一个颜色。
    2)然后学习如何平滑的混合每一个顶点的颜色从而绘制出一个完整的几何物体。

准备工作:
1 复制上一章节中的工作。
2 更改名为AirHockey2。
3 其它的都不用动。。。。

接下来是这一章节内容划分:

4.1 平滑着色(Smooth Shading)

4.2 引入Triangle Fans(Introducing Triangle Fans)

4.3 增加一个新的颜色属性(Adding a New Color Attribute)

4.4 使用新的颜色进行渲染(Rendering with the New Color Attribute)

4.5 ReView(小结)

在我们已经有了部分模板代码的情况下给每一个顶点增加一个颜色也不是什么难事,首先在顶点数组及顶点着色器中中增加了一个颜色属性数据,同时通过使用stride(步长)告诉OpenGL如何读取这些数据。然后使用varying类型变量对三角形平面颜色进行插值。
    一个需要注意的点是当我们传递顶点数据的时候,需要确保对分量数(component counts)及步长(stride)传递正确值。假如传递了不正确的值,则会导致绘制不正确的颜色到屏幕上(造成花屏)并最终导致应用崩溃。

4.6 Exercise(练习)

1 给桌面中心线添加颜色混合。
2 改变组成矩形的三角形使得三角形的边缘消失(Tips:使用更多的三角形)

下一章我们将会学习向量及矩阵,同时修复当屏幕从竖屏切换到横屏时产生的形变问题。

最后附上本章代码(点击下载)

Part I 空气曲棍球 Chapter4 Adding Color and Shade)相关推荐

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

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

  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.2 Introducing Triangle Fans)

    4.2 引入Triangle Fans(Introducing Triangle Fans) 在新的顶点结构中,中心处将会有一个顶点坐标,这样的话绘制矩形就必须采用四个三角形而不是两个了.我们把新的中 ...

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

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

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

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

  6. Part I A Simple game of air hockey(空气曲棍球)-Chapter2 Defining Vertices and Shaders

    上一章节简单介绍了OpenGL ES 2.0开发的简单入门知识,实际上你学没有真正进入OpenGL ES 2.0的世界,从这一章开始将会一步步的带着你开始你的OpenGL ES 2.0实战之旅,这里最 ...

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

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

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

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

  9. outdated: 3.Adding Color

    修改部分位于星号行列之间. 1 #include <windows.h> 2 #include <gl/glew.h> 3 #include <gl/glut.h> ...

最新文章

  1. 自动驾驶汽车数据闭环方法分析
  2. 2018-3-18 中国计算机之母-- 夏培肃
  3. python localtime 与utc时间差5分钟_python utc时间减去5分钟
  4. OpenCV实战中:blender-feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常的处理方法
  5. VC MFC界面上显示BMP图片
  6. 串行并行程序在效率上的简单比较
  7. Linux内核分析 - 网络
  8. array_combine()
  9. 怎样判断电饭锅温度传感器的好坏?_空调温度传感器的作用与检测。
  10. java基础之算法_java基础之几种常见的排序算法
  11. POJ 3168 排序+扫描
  12. 级联MobileNet-V2实现CelebA人脸关键点检测(附训练源码)
  13. Dart基础-控制流程与异常处理
  14. 安装与卸载软件的方法:rpm、yum工具介绍
  15. OpenCV-理想高通低通滤波器(C++)
  16. javascript有关this的那些事(某渣提出的问题)
  17. 小米6手机关于 手机重启后密码策略更改 密码错误 及wifi解决办法
  18. Fortran的全局变量(Common blocks)
  19. php mov格式转换,mov格式怎么转换成mp4 如何将mov转换成mp4
  20. C++运算符重载 ++,--,+,-,+=,-=,输出输入运算符

热门文章

  1. 自从用了这款神器,我的PPT课件居然只花20分钟就做完了
  2. ImageNet历年冠军模型
  3. nodejs顶层路由设计
  4. 电视果就够了!电视看最全的爱奇艺内容
  5. /libgomp.so.1: version `GOMP_4.0' not found (required by
  6. 理解Serverless架构理念
  7. 服务器 1 500错误信息,什么是500错误
  8. 脱口秀利器?聊聊那些你不知道的秘密
  9. argparse详解
  10. Acer 4630z成功装东皇MacOS10.6.5