OpenGL против Cocos2d: что выбрать? - PullRequest
14 голосов
/ 19 марта 2012

Я понимаю, что cocos2d - это действительно простой API, и я могу использовать его для создания простых и огромных 2D или даже иногда 3D игр / приложений. Также я понимаю, что OpenGL сложнее, это API более низкого уровня и т. Д.

Вопрос:
Что лучше для реализации 2D / 3D игр?
Зачем нам изучать OpenGL, если у нас есть простые фреймворки, такие как cocos2d?
Что вы можете сделать с OpenGL, что вы не можете сделать с cocos2d?

Заранее спасибо!

Ответы [ 2 ]

21 голосов
/ 19 марта 2012

Что лучше для реализации 2D / 3D-игр?

  • Трудно сказать, но API более высокого уровня всегда есть, чтобы вам было легче.Например, вы пишете 2D Shootem вверх.Скорее всего, вы будете использовать игровой цикл, вы захотите использовать спрайты и заставить их двигаться на экране.Вы можете захотеть анимацию, например, взрывы.В итоге вы создадите свой собственный API более высокого уровня для этих целей.Cocos2D уже решил эти проблемы для вас.Любой другой фреймворк должен был это решить.

Зачем нам нужно изучать OpenGL, если у нас есть простые фреймворки, такие как cocos2d?

  • На случай, если выЕсли вы хотите описать стандартное поведение фреймворка, особенно часть рисования, вы должны войти в openGL.Если есть что-то, что вам нравится иметь, которое не выходит из коробки, вы можете переопределить базовый каркасный класс.Например, посмотрите на шейдеры, используемые в Cocos2D 2.0.Если вам нравится какой-то особый режим смешивания, например, эффект тонирования, вы не получите его бесплатно.Для CCSprite есть атрибут цвета, но это может быть не тот результат, который вы ожидаете.Таким образом, вам придется написать свой собственный шейдер и подключить его к спрайту, который вы хотите отображать другим способом.

Что вы можете сделать с OpenGL, что вы не можете сделать с cocos2d?

  • Это сравнение на самом деле не работает, так как cocos2dоблегчает opengGL для рисования часть, чтобы создать API более высокого уровня и сделать вашу жизнь как разработчика игр.
13 голосов
/ 19 марта 2012

Cocos2d - это оболочка для 2D-функций OpenGL (на данный момент: http://www.cocos2d -iphone.org / about ). Под капотом он сам использует OpenGL ES для реализации своих функций. Это хорошо, потому что это означает, что производительность будет минимальной, так что вы сможете начать использовать его более простой API, не погружаясь в значительно больший путь обучения OpenGL.

Однако он имеет только сильную поддержку 2D, и если вы планируете писать более поздние 3D-игры, вы теряете все преимущества Cocos2d: зачем вам переписывать движок 3D-рендеринга с 2d-фреймворком, который использует очень сильный 3D-движок? Вы теряете производительность для большого количества ненужной работы.

Итак, более простой ответ: для 2d Cocos2d, для 3d OpenGL.

Если вы хотите запустить OpenGL ES, это очень хороший учебник для начинающих: http://iphonedevelopment.blogspot.it/2009/05/opengl-es-from-ground-up-table-of.html

...