Почему OpenGL ES и cocos2D быстрее, чем сами платформы Cocoa Touch / iOS?


Интересно, если cocos2D построен поверх фреймворков iOS, не будет ли cocos2D немного медленнее, чем использование непосредственно Cocoa framework? (является ли cocos2D на вершине OpenGL ES, который в свою очередь находится на вершине Cocoa Touch / iOS фреймворков, включая Core Animation и Quartz?).

Однако я слышал, что OpenGL ES на самом деле быстрее, чем использование Core Graphics, Core Animation и Quartz?

Итак, OpenGL ES-самый быстрый, cocos2D-второй, а Core Animation-самый медленный? Кто-нибудь знает почему использование OpenGL ES быстрее, чем прямое использование Cocoa framework?

1 2

1 ответ:

Cocos2D построен поверх OpenGL. При создании спрайта в cocos2D вы фактически создаете 3D-модель и применяете к ней текстуру. 3D-модель - это просто плоский квадрат, и камера всегда смотрит прямо на него, поэтому все это кажется плоским и 2D. но именно поэтому вы можете легко масштабировать и вращать спрайты - все, что вы действительно делаете, это вращаете 2D-квадрат (ну, два треугольника на самом деле) или перемещаете их ближе или дальше от камеры. Но Cocos2d Отличается справится со всем этим за тебя.

OpenGL изначально спроектирован так, чтобы очень быстро откачивать 3D-графику. Таким образом, он предназначен для обработки толкания точек и треугольников вокруг. Это затем усиливается с помощью 3D-рендеринга оборудования, которое он может использовать специально для этого. Поскольку это все, что он делает, он может быть очень оптимизирован для выполнения всех математических вычислений по точкам, которые создают объекты и отображают текстуры на эти объекты. Ему не нужно беспокоиться об обработке прикосновений или других системных вещей, которые Какао-да.

Cocoa Touch не использует openGl. Он может использовать некоторое аппаратное ускорение, но он не предназначен для этого - он предназначен для создания 2D-кнопок и т. д. То, что он делает, он делает хорошо, но у него есть много слоев, которые нужно пройти, чтобы сделать то, что ему нужно, что не делает его таким же эффективным, как что-то, разработанное только для графики (openGL).

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

Но все они имеют свое применение и превосходны в своих отдельных нишевых областях.