я прочитал эта страница чтобы понять детали чертежа партии, но у меня все еще есть вопросы. Я знаю, что для того, чтобы уменьшить количество вызовов на розыгрыш, нам нужно использовать пакетный розыгрыш. Я использую это так:
auto spritebatch = SpriteBatchNode::create("ingame.png");
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ingame.plist");
И теперь мне нужно создать Sprite, я должен сделать это:
auto backgroundSprite = Sprite::createWithSpriteFrameName("back_gradient.png");
spritebatch->addChild(backgroundSprite);
Но я не понимаю следующих вещей:
SpriteBatchNode
? и добавить их в игровой слой?Что делать, если одну и ту же таблицу спрайтов следует использовать в разных сценах? Должен ли я сделать следующее снова?
auto spritebatch = SpriteBatchNode :: create («ingame.png»);
SpriteFrameCache :: деЫпзЬапс () -> addSpriteFramesWithFile ( «ingame.plist»);
Что делать, если я использую спрайты с Button
, TextEdit
, Label
и другие элементы пользовательского интерфейса.
SpriteBatchNode
, В этом случае, как объединить элементы интерфейса и спрайт в одном представлении / сцене?Извините за множество вопросов. Но дело в том, что я не смог найти ни одного ресурса, который бы содержал пояснения к этим вопросам. Пока они все связаны. Если вы не знаете ответы на эти вопросы, вы не знаете, как использовать SpriteBatchNode
,
Не используйте CCSpriteBatchNode в cocos2d-x v3. Пакетирование выполняется автоматически, и его лучше оставить рендереру для оптимизации вызовов отрисовки с помощью пакетного рисования. Так сказано прямо в статье, которую вы связали:
Граф Render был отделен от графа Scene. Это означает, что автоматическое пакетирование, наконец, поддерживается 🙂 И новый рендерер настолько быстр, что мы больше не поощряем использование SpriteBatchNode.
Я не согласен, в зависимости от того, насколько быстро новый рендер мы хотим получить как можно больше.
Нарек, ты прав.
Во время рендеринга геометрия будет отсортирована, чтобы уменьшить количество вызовов GL. Но не ожидайте, что это рассортирует детей разных родителей в одну строку. Пример: у вас есть
Узел с детьми аб а также переменный ток
Узел В с детьми бод а также быть.
если b и d используют текстуры одного и того же атласа, это не гарантирует, что вы получите какое-либо повышение производительности при использовании атласов вообще.
Но я могу подтвердить, в настоящее время это действительно быстро, и в моем случае вызовы GL вовсе не являются узким местом 🙂