Cocos2d: Рисует ли узел CCSpriteBatch только спрайты с видимым свойством, установленным в true?

Узел CCSpriteBatch рисует только спрайты с видимым свойством, установленным в true?

Или это учитывает также размер экрана? Другими словами. Если спрайт внутри узла находится за пределами экрана, будет ли это отражать производительность вызова отрисовки opengl?

1 ответ

Решение

Нет и нет

CCSpriteBatchNode всегда рисует все дочерние спрайты. Я не уверен, что именно делает спрайты видимыми = НЕТ, чтобы они не появлялись на экране, но технически он каждый раз рисует все квады. Это также не учитывает область экрана.

Спрайты, которые не упакованы, ведут себя по-разному. Если спрайт без пакета не виден, он просто не рисуется. Спрайты за пределами экрана нарисованы как бы то ни было. Cocos2D не имеет функции, позволяющей пропускать прорисовку узлов за пределами границ экрана / окна.

Из того, что я читал в последние годы, слышишь, так что возьми это с недоверием:

Слишком много пакетных спрайтов по-прежнему отрицательно влияет на производительность, даже если они не видны или находятся за пределами экрана. Графический процессор отвечает за отмену розыгрышей четырехугольников, которые не видны из-за того, что они полностью находятся за пределами экрана. Это все еще должно обработать те четырехугольники.

Это главная проблема реализации файла мозаики cocos2d и почему она так медленна с большими картами плиток. Внутренние карты тайлов также используют ту же технику пакетирования спрайтов.

Другие вопросы по тегам