Роль CCSpriteBatchNode - PullRequest
       5

Роль CCSpriteBatchNode

0 голосов
/ 31 января 2012

Идея, стоящая за CCSpriteBatchNode, состоит в том, чтобы один раз визуализировать текстуру для многих спрайтов, что должно повысить производительность, а не рассматривать каждый спрайт как отдельную текстуру.

Тем не менее, я не совсем понимаю, как это выгодно, в отличие от использования только одного атласа текстуры. Если вы создаете текстуру с этим:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"gameTexture.plist"];

и затем каждое отдельное изображение, которое вы используете для спрайтов, извлекается с использованием frame методов, тогда разве все ваши изображения не используют одну и ту же единственную визуализированную текстуру, даже если никогда не был представлен пакетный узел?

Конечно, вы можете использовать батчод в сочетании с текстурным атласом, но как это на самом деле выигрыш в производительности? Если вы не используете batchnode, выполняет ли он рендеринг текстуры несколько раз, даже если она кэшируется?

Ответы [ 2 ]

1 голос
/ 31 января 2012

Повышение производительности происходит благодаря сокращению количества вызовов OpenGL. Если вы не используете SpriteBatchNode, ваши спрайты будут исходить из одной текстуры да, но все они будут делать отдельные вызовы OpenGL. Объект пакетного узла содержит код для сбора всех его дочерних элементов и выполнения всего одного вызова, поэтому ваши спрайты должны быть дочерними по отношению к одному и тому же пакетному узлу, чтобы повысить производительность.

0 пакетный узел + 100 спрайтов = 100 вызовов OpenGL.

1 пакетный узел + 100 спрайтов (дочерние элементы этого пакетного узла) = 1 вызов OpenGL.

Если вы действительно заинтересованы, загляните в CCSpriteBatchNode.m

1 голос
/ 31 января 2012

используя одну и ту же текстуру, вы не изменяете текстуру при каждом вызове, но вы по-прежнему визуализируете все спрайты в разных glBegin и Ends, а использование CCSpriteBatchNode гарантирует, что каждый спрайт в нем будет отображаться в одном и том же вызове

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...