Вопрос по iphone, cocoa-touch, opengl-es, uikit – Имеет ли openGL ES лучшую производительность, чем Core Animation и UIKit, когда речь идет о высоко анимированных пользовательских интерфейсах?
================================================================================================================================================================================================

В настоящее время у меня есть пользовательский интерфейс, который делает невероятно интенсивное использование основной анимации. Интересно, стоит ли потратить еще 2 месяца на изучение openGL ES? Действительно ли это улучшает производительность рисования для 2D поверхностей? У меня нет 3D-объектов, но очень анимированные 2D-вещи. Иногда с 3D искажениями, большим количеством поворотов и масштабированием.

В частности, я создал целую игру со множеством спрайтов, используя только CA. Производительность в порядке, но не идеально.

 и ответ определенно был положительным - если вы потратите время на использование OpenGL на низком уровне, вы получите лучшую производительность для 2D.



 что вы делаете и на какое устройство вы ориентируетесь. Если вы делаете вещи, которые выигрывают от программируемого графического конвейера и нацеливаются на iPhone 3GS, то вы можете увидеть некоторую выгоду, просто потому, что эта функциональность не раскрывается через CoreAnimation, поэтому вам придется делать это каким-то странным образом (манипулируя изображения и т. д.). Аппаратное обеспечение iPhone 3G не имеет программируемых шейдеров, так что даже если ваши эффекты могут быть выражены в виде шейдеров, переход на OpenGL не даст такой выгоды на старых телефонах.

Если все, что вы делаете, - это перемещение, вращение и масштабирование 2D-поверхностей, то CoreAnimation даст OpenGL очень похожую производительность, чуть лучше или хуже, в зависимости от того, как ваши данные попадают в слои и т. Д.



 просто потому, что он ближе всего к аппаратному обеспечению. (Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь в этом.) В OpenGL вы можете сделать несколько хитрых трюков, которые немного улучшат вашу производительность & # x2013; вы можете рисовать спрайты партиями, вы можете использовать точечные спрайты, вы можете попробовать сжать текстуры и т.д.

С другой стороны, вы приближаетесь к аппаратному обеспечению, и абстракции не так много, по крайней мере, по сравнению с Core Animation. Вам приходится иметь дело с текстурами, не являющимися степенями двойственности, проекциями, матрицами, вы должны сами писать код анимации и т. Д. Есть много мест, где вы можете ошибиться и серьезно убить производительность, вместо того, чтобы сделать ее лучше.

Что мне нравится в OpenGL, так это то, что он кроссплатформенный. Есть много ресурсов об OpenGL, есть много места для улучшений. Если вы хотите писать игры и у вас есть время изучить OpenGL, сделайте это. Интегрировать основы OpenGL в дизайн ООП не так сложно, и в конечном итоге вы получите больше места для повышения производительности. Хорошее место для начала[Cocos & # xA0; 2D движок для iPhone](https://code.google.com/p/cocos2d-iphone/source/browse/).

(Отказ от ответственности: я немного знаю об OpenGL и почти ничего о Core Animation. Я написал две 2D-игры для iPhone с использованием OpenGL.)