我所理解的cocos2dx - 帧缓冲

GroupCommand

  分组绘制在cocos2dx上主要有2个用途,一个是RenderTexture,它是一个node的子类,用于把场景绘制到纹理而不是屏幕上,也可以把缓冲区上的颜色,深度和模版值保存到Renderbuffer上,供多个帧缓冲之间共享。

  另一个用途就是实现裁剪,例如ClippingNode,它能在绘制命令上加特殊绘制状态,如模版测试。

 

GroupCommand流程

  Begin:开始组绘制,会先在绘制栈上新开一个绘制组,把id放入绘制组的id,Render会从id栈取顶的id来获取绘制组,这样绘制命令就会加入到新的绘制组里,这在GroupCommand的init里实现。因为ui树和绘制分开了,所以begin的时机不是ui遍历到该元素的时机,而是Renderer在开始绘制GroupCommand的时机。

  visit:加入绘制命令到该组

  end:该组所有需要绘制的命令都遍历后,从Render上移除id和该组对应的RenderQueue,还要还原一些状态。

 

GroupCommand限制

  绘制机制会导致某些情况绘制异常,例如组内元素用了globalZ来设定层级,显示到最顶端,但会被ClippingNode的裁剪给影响。而且GroupCommand只影响RenderCommand绘制,所以要通过RenderComand来进行gl操作才行。

 

。。待续

posted on 2017-07-21 09:32  usp10  阅读(650)  评论(0编辑  收藏  举报

导航