4.1 平滑着色(Smooth Shading)

在第二章中,我们学习了如何使用uniform类型变量定义要绘制的三角形的颜色,如下图所示:

我们已经知道OpenGL只支持绘制点、线、三角形的命令,如果我们想要绘制其它形状那只能从这三种形状组合而成。由于我们只能绘制这三种图元,我们如何使用多种不同的颜色和着色器绘制出一个复杂的场景呢?

有一种方法是使用大量的三角形进行绘制,而每一个三角形都使用不同的颜色进行绘制,假如我们使用的三角形足够多的话,那我们看到的三角形就是有丰富色彩的三角形。虽然这种方法可行,但是内消耗很大,更没有什么性能可言。
假如不用上面的方法,如果可以在同一个三角形串进行颜色混合呢?如果三角形的三个顶点使用不同的颜色进行绘制,并在三角形的表面将这些颜色混合起来,这样的话我们就可以得到一个平滑颜色绘制的三角形,如下图:

4.1.1 在不同的顶点之前进行平滑着色(Smooth Shading Is Done Between Vertices)

OpenGL提供了一种在一条线的两个顶点之间或者三角形的表面进行平滑着色的混合颜色方法,我们将使用这种方法对桌面进行着色,同时使得桌面的中央明亮些,靠近边缘处暗些。但是在那之前,我们先更新下桌面的顶点结构,现在我们使用两个三角形进行绘制,如下图所示:

那我们要怎样才能使得桌面的中央明亮呢?在中央并没有顶点,因此也没有颜色可以进行混合。所以现在我们将会在桌面的中央增加一个顶点,这样的话就可以以桌面中央和边缘处的颜色进行混合,因此桌面的顶点坐标将会更新为如下的结构:

现在我们要做的就是按照上面的图示更新桌面顶点坐标,在下节中我们将引入一种新的绘制三角形的命令,即Triangle Fans。

Part I 空气曲棍球 Chapter4 (4.1 Smooth Shading)相关推荐

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

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

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

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

  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. redis 入门教程
  2. Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性
  3. Mysql 使用正则表达式
  4. aix c语言 构造函数,错误:命名构造函数,而不是类型。使用g++4.6.1进行编译
  5. 模块化之SeaJS(一)
  6. oracle fileperset,RMAN具体使用方法
  7. memcached服务安装与卸载
  8. 微软ODBC服务器驱动,Microsoft ODBC 驱动程序的功能 - ODBC Driver for SQL Server | Microsoft Docs...
  9. cityengine导出fbx
  10. python--unicode汉字编码表实现汉字输出
  11. php中文歌词,酷狗krc歌词解析并转换为lrc歌词php版
  12. 网管必备知识全套=做为一个网管必备的基础知识
  13. revit二次开发创建标高
  14. 《SEM长尾搜索营销策略解密》一一2.7 经济基础决定上层建筑,文化也是
  15. 运用supervisor管理thinkqueue 和swoole推送
  16. 获取非行间样式和行间样式方法
  17. HDMI RGB_TO_DVI模块
  18. 2021 上海科技大学 信息学院SIST 推免夏令营 经历
  19. 骁龙778g4g和5g区别
  20. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

热门文章

  1. 公有云市场, SaaS难逃厄运
  2. Docker技术入门与实战(第2版)3.6 存出和载入镜像
  3. 【轩说AI】生成模型(2)—— GAN生成对抗网络 + WGAN + Conditional GAN + Cycle GAN
  4. echarts分段式视觉映射组件与彩虹图
  5. [i春秋]“百度杯”CTF比赛 十月场-Hash
  6. Python3之海象运算符
  7. 下采样downsamp和上采样upsample
  8. matlab实现BP神经网络(完整DEMO)
  9. 中国气囊式和隔膜式液压蓄能器市场现状研究分析与发展前景预测报告
  10. 射频电路原理及主要应用