11.4可编程管线
正如本章开始所说的那样,在Cocos2d—x中,最大的变革就是引入了OpenGL ES 2.0作为底层绘图,这意味着渲染从过去的固定管线升级到了可编程管线,我们可以通过着色器定义每一个顶点或像素的着色方式,产生更丰富的效果。着色器实际上就是一小段执行渲染效果的程序,由图形处理单元执行。之所以说是“一小段”,是因为图形渲染的执行周期非常短,不允许过于臃肿的程序,因此通常都比较简短。
11.4.1 可编程着色器
在渲染流水线上,存在着两个对开发者可见的可编程着色器,具体如下所示。
口顶点着色器(vertex shader)。对每个顶点调用一次,完成顶点变换(投影变换和视图模型变换)、法线变换与规格化、纹理坐标生成、纹理坐标变换、光照、颜色材质应用等操作,并最终确定渲染区域。在Cocos2d—X的世界中,精灵和层等都是矩形,它们的一次渲染会调用4次顶点着色器。
口段着色器(fragment shader,又称片段着色器)。这个着色器会在每个像素被渲染的时候调用,也就是说,如果我们在屏幕上显示一张320 X 480的图片,那么像素着色器就会被调用153 600次。所幸,在显卡中通常存在不止一个图形处理单元,渲染的过程是并行化的,其渲染效率会比用串行的CPU执行高得多。
这两个着色器不能单独使用,必须成对出现,这是因为顶点着色器会首先确定每一个显示到屏幕上的顶点的属性,然后这些顶点组成的区域被化分成一系列像素,这些像素的每一个都会调用一次段着色器,最后这些经过处理的像素显示在屏幕上,二者是协同工作的。
进一步深入介绍的就是顶点着色器编程语言和编程方法了。这里我们并不打算这么做,一来这是一门足够高深的学问,绝不是一两章能说清楚的;二来我们可以找到足够多的开源的着色器,能够提供各种丰富的效果,实际上需要自己编写着色器的场合并不太多。因此这里我们将着重介绍如何在Cocos2d—x游戏中导人自定义的着色器效果。
展开
“本书不是一本简单的参考书,更像一本教科书,无论初学者还是具备一定游戏开发经验的人,都将借此开始一段精彩而奇幻的游戏开发之旅。书中充分考虑了实用性,不仅讨论了Cocos2d-x本身的知识点,而且涵盖了诸如联网、OpenGL ES、地图工具、跨平台移植以及HTML5游戏版本移植等方面的内容。读者可以方便地学以致用,在移动互联网飞速发展的今天迅速把握流行趋势,高效地掌握游戏开发技巧。”
——gagaga,CocoaChina开发社区版主
“《捕鱼达人》能获取巨大的用户量,首先要感谢Cocos2d-x的跨平台特性,它使更多的用户可以在第一时间体验炫酷的游戏。这是一本Cocos2d-x进阶教程,可以帮助开发者打造一款完整的游戏。这本书仿佛是《捕鱼达人1》立项到上线的所有技术难题解决方案的汇总,让我备感亲切。”
——樊少强,触控科技技术副总监,《捕鱼达人》的制作人