概述
本文主要以开发者的角度来介绍cocos2d v3.x中的渲染管道。它并不是由核心引擎团队提供的roadmap的替代物。
注意:这将不会涉及到新的渲染管道的大部分实现细节,有想要为此出力的可以参考roadmap的相关文档。
我们先来看一下新的渲染管道的愿景。
愿景
cocos2d v3.x中新的渲染管道致力于通过利用现代大多数移动设备流行的多核处理器来提升渲染性能。同时,api风格又是兼容于v2.x的,所以v2.x的用户将更容易适应它。
目标
新特性和升级的目标可以总结如下:
- 渲染图解耦
- Viewing frustum Geometry culling(PS:不知道啥鸟东西)
- 独立线程渲染
- 自动批处理
- (基于Node的)自定义渲染
- 优化2d,适应3d
Roadmap
自cocos2d v3.0 beta后,渲染器已经将场景图中解耦,它将支持自动批处理和自动选择。
完整的Roadmap渲染资料在这里。
新的渲染器的架构概述
正如上文所提到的,每一个渲染的api调用将进入到一个有独立线程的渲染队列,它将直接调用显卡的OpenGL命令。
下面是渲染器架构的图表:
有一段程序负责运行于前端生成各种命令,并将它们发送到CommandQueue等待一个独立的后端线程来处理(排序啊,重新排列啊等)。
命令的格式不在本文档的范围,请参考相关文档。
如果你想拓展cocos2d v3.x的引擎,例如你想定义一个sprite来自定义描绘代码,你可不能像以前一样放到draw()方法了,你应该熟悉相关的命令然后在draw()方法中构建你要的命令。
要了解更多的信息,你可以看一下cocos2d-x v3.0beta中内置的DrawNode
总结
由于cocos2d-x v3.x中的渲染管道才刚刚起步,还需要更多的时间和耐心来让它茁壮成长。