我所理解的cocos2dx - 帧缓冲

本文介绍了Cocos2dx中分组绘制(GroupCommand)的两大用途:使用RenderTexture将场景绘制到纹理而非屏幕,以及利用ClippingNode实现裁剪效果。详细解释了GroupCommand的Begin、Visit和End流程,并指出了可能遇到的绘制限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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操作才行。

 

。。待续

转载于:https://www.cnblogs.com/usp10/p/7216057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值