OpenGL ES как 2D-платформа - PullRequest
       17

OpenGL ES как 2D-платформа

0 голосов
/ 18 декабря 2009

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

Ответы [ 2 ]

3 голосов
/ 19 декабря 2009

Получено от аналогичного ответа, который я предоставил здесь :

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

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

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

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

3 голосов
/ 18 декабря 2009

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

При этом проще написать код для 2D-рисования с помощью Quartz, поэтому вы должны решить, какой компромисс.

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