OpenGL vs Cocos2d: что выбрать?

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

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

Спасибо заранее!

Ответы

Ответ 1

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

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

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

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

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

  • Это сравнение действительно не работает, поскольку cocos2d облегчает opengGL для части чертежа, чтобы создать этот более высокий уровень api и сделать вашу жизнь проще в качестве разработчика игр.

Ответ 2

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