Будет ли OpenGL ES работать лучше, чем CoreAnimation, для анимации сотни слоев?

У меня есть объект, который состоит из CATransformLayer с двумя подслоями CAKeyframeAnimated. При добавлении всего 10 экземпляров этого объекта к слою представления, частота кадров действительно упала до ~ 10/15 кадров в секунду. Я не знаю точно, сколько, но выглядит не очень хорошо. Это всего 20 анимаций. Положение объекта не связано с ключевыми кадрами.

Я использую это на iPad Mini.

Это слишком много для iPad Mini, или я могу добиться лучших результатов, используя OpenGL ES?


person alecail    schedule 27.03.2013    source источник
comment
OpenGL всегда будет быстрее, но что именно вы анимируете и что вы имеете в виду, говоря, что объект даже не движется? Если преобразование выполняется, перерисовка по-прежнему является перерисовкой, независимо от местоположения x, y.   -  person Mark McCorkle    schedule 27.03.2013
comment
@MarkM Я имел в виду, что просто добавлял объекты в случайные позиции на слое, просто чтобы проверить, что анимация подслоев в порядке.   -  person alecail    schedule 27.03.2013
comment
Не зная точно, что вы пытаетесь оживить, я бы сразу порекомендовал использовать для этого что-то вроде Cocos2d. Вы можете многое сделать с помощью CALayers, но производительность всегда будет лучше, если использовать фреймворк на основе OpenGL, такой как Cocos2d, особенно с довольно сложной сценой.   -  person Mark McCorkle    schedule 27.03.2013
comment
@MarkM Я больше тестировал CoreAnimation, чтобы увидеть, как он работает с большим количеством слоев, чем на самом деле проблема в реальном приложении. Я предполагаю, что CALayers предназначены для анимации пользовательского интерфейса.   -  person alecail    schedule 27.03.2013


Ответы (1)


Я бы рекомендовал использовать Cocos2d для довольно сложной сцены. В сети есть несколько отличных руководств. Рэй всегда отлично разбирался в этой теме, и именно здесь я впервые изучил cocos2d. Это не так сложно, как может показаться. Кроме того, добавить физику очень просто благодаря огромной поддержке сообщества. (http://www.raywenderlich.com/28602/intro-to-box2d-with-cocos2d-2-x-tutorial-bouncing-balls)

person Mark McCorkle    schedule 27.03.2013