Для 2-го рисунка окклюзия выполняется по порядку нанесения. Более поздний из них закроет прежний.
Но когда все рисование выполняется за один вызов, как cocos2d-x (и cocos2d iphone для spriteBatchNode) гарантируют правильную окклюзию?
Простой пример, спрайт B и спрайт C оба находятся под узлом A. Они имеют одинаковую текстуру, шейдер, blendFunc, что позволяет оптимизировать их с помощью системы автоматического пакетного рендеринга cocos2d-x 3.x ( В случае с cocos2d-iphone они используют ту же таблицу спрайтов, что и текстура, и под одним и тем же spriteBatchNode) и рисуются одним вызовом glDrawElements. AFAIK, тест глубины отключен для gles в этот момент. Если мы хотим, чтобы спрайт C покрывал спрайт B, мы должны сначала нарисовать B, а затем C. Но теперь они нарисованы вместе. Как система рендеринга может гарантировать правильную окклюзию C и B?
Пожалуйста, поправьте меня, если я допустил ошибку.