【发布时间】:2018-06-29 10:13:04
【问题描述】:
对于2d绘图,遮挡是按照绘图的顺序进行的。后一个将遮挡前一个。 但是当所有的绘图都在一个调用中完成时,cocos2d-x(和 cocos2d iphone for spriteBatchNode)如何保证正确的遮挡?
一个简单的例子,sprite B和sprite C都在节点A下。它们具有相同的纹理、着色器、blendFunc,这使得它们可以通过cocos2d-x 3.x的自动批处理渲染系统进行优化(在 cocos2d-iphone 的情况下,它们使用相同的 spritesheet 作为纹理并在相同的 spriteBatchNode 下),并在一次 glDrawElements 调用中绘制。 AFAIK,此时已禁用 gles 的深度测试。如果我们想让精灵C覆盖精灵B,我们应该先画B,然后画C。但现在它们被画在一起了。渲染系统如何保证C和B的正确遮挡?
如果我犯了任何错误,请纠正我。
【问题讨论】:
标签: c++ opengl-es cocos2d-iphone cocos2d-x