2009-12-18 3 views
0

Я видел много разговоров о том, что лучше, Quartz или OpenGL ES для 2D-игр. Неподвижные библиотеки, такие как Cocos2D, мне любопытно, может ли кто-нибудь указать ресурсы, которые учат OpenGL ES в качестве 2D-платформы. Я имею в виду, действительно ли мы заявляем, что обучение 3D-программированию стоит небольшого увеличения скорости ... или может быть изучено с точки зрения 2D?OpenGL ES как 2D-платформа

ответ

3

GL, скорее всего, даст вам лучшую производительность с меньшим потреблением процессора, разрядом батареи и т. Д. 2D-рисунок с GL - это как 3D-рисунок с GL, вы просто не меняете координату Z.

Это, как говорится, легче написать 2D-чертежный код с кварцем, поэтому вам нужно решить компромисс.

3

списаны от подобного ответа я предоставил here:

Вы, вероятно, означает Core Animation, когда вы говорите Quartz. Кварц обрабатывает статический двухмерный чертеж в пределах видов или слоев. На iPhone все чертежи Quartz для отображения выполняются на уровне Core Animation, либо непосредственно, либо через слой с поддержкой. Каждый раз, когда этот чертеж выполняется, слой отправляется на GPU для кэширования. Это повторное кэширование - дорогостоящая операция, поэтому попытка оживить что-либо, перерисовывая его в каждом кадре с помощью Quartz, приводит к ужасной производительности.

Однако, если вы можете разделить свою графику на спрайты, содержимое которых не меняется часто, вы можете добиться очень хорошей производительности с помощью Core Animation. Каждый из этих спрайтов будет размещаться в CALayer Core Animation или UIKit UIView, а затем анимироваться по экрану. Поскольку слои кэшируются на графическом процессоре, в основном в виде текстур, их можно перемещать очень плавно. Я смог перемещать 50 полупрозрачных слоев одновременно на 60 FPS (100 при 30 FPS) на оригинальном iPhone (не 3G S).

Вы можете сделать даже рудиментарный трехмерный макет и анимацию, используя Core Animation, как я показываю в this sample application. Тем не менее, вы ограничены работой с плоскими, прямоугольными структурами (слоями).

Если вам нужно выполнить истинную трехмерную работу или хотите выжать последний бит производительности из устройства, вам нужно посмотреть OpenGL ES. Однако OpenGL ES не так просто работать с Core Animation, поэтому я решил сначала попробовать Core Animation и переключиться на OpenGL ES, только если вы не можете делать то, что хотите. Я использовал оба приложения в своих приложениях, и мне очень нравится работать с Core Animation.