Я видел много разговоров о том, что лучше, Quartz или OpenGL ES для 2D-игр. Неподвижные библиотеки, такие как Cocos2D, мне любопытно, может ли кто-нибудь указать ресурсы, которые учат OpenGL ES в качестве 2D-платформы. Я имею в виду, действительно ли мы заявляем, что обучение 3D-программированию стоит небольшого увеличения скорости ... или может быть изучено с точки зрения 2D?OpenGL ES как 2D-платформа
ответ
GL, скорее всего, даст вам лучшую производительность с меньшим потреблением процессора, разрядом батареи и т. Д. 2D-рисунок с GL - это как 3D-рисунок с GL, вы просто не меняете координату Z.
Это, как говорится, легче написать 2D-чертежный код с кварцем, поэтому вам нужно решить компромисс.
списаны от подобного ответа я предоставил 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.
- 1. OpenGL или OpenGL ES
- 2. OpenGL to OpenGL-ES - glBegin();
- 3. OpenGL to OpenGL-ES - glRectf()
- 4. OpenGL/OpenGL ES update texture
- 5. iPhone OpenGL ES - Как выбрать
- 6. Как отлаживать ошибки OpenGL ES?
- 7. iOS OpenGL ES совместим с Android OpenGL ES?
- 8. Выберите OpenGL ES 1.1 или OpenGL ES 2.0?
- 9. OpenGL-es Sprite Sheets
- 10. glPushMatrix и OpenGL ES
- 11. OpenGL ES - Пунктирные линии
- 12. OpenGL ES iPhone Textures
- 13. OpenGL ES вращают мир
- 14. glMultiTexCoord в OpenGl ES
- 15. Функция OpenGL ES
- 16. Opengl ES и texcoord
- 17. OpenGL ES странные координаты
- 18. SurfaceView с OpenGL ES
- 19. Открытая текстура OpenGL ES
- 20. Функция OpenGL ES
- 21. iPhone OpenGL-ES: UISwipeGestureRecognizer
- 22. OpenGL ES 2.0 смешивания
- 23. Swift OpenGL ES перечислений
- 24. Разница в IOS OpenGL ES и Android OpenGL ES
- 25. Смешивание OpenGL ES 1 и OpenGL ES 2
- 26. Координаты в OpenGL ES
- 27. opengl-es glUseProgram() adrugments
- 28. OpenGL ES 2.0 матрицы
- 29. OpenGL ES Texture Masking
- 30. OpenGL ES или android.graphics?