Требуется ли OpenGL для моей игры в iPhone?

На iPhone:

Если я пишу игру с несколькими уровнями, с несколькими анимациями (последовательностями изображений), jpg и png (прозрачными), некоторые полноэкранные и некоторые нет, некоторые зацикливаются, а некоторые воспроизводятся только один раз. Каков наилучший способ сделать это? Каждый уровень может иметь до 10 МБ изображений. Добавьте к этой музыке и видео (вырезайте сцены). Все 2D-графики, 3D-модели.

Требуется ли OpenGL? Или это может быть достигнуто с помощью Quartz или Core Animation?

Ответ 1

Я использую UIViews и немного Core Graphics (Quartz 2D), и он отлично работает. Я обнаружил, что пользовательский чертеж в Core Graphics немного подталкивает его, потому что UIViews лучше всего работают, когда дают изображения, а не рисуют сами. Также следите за большим количеством прозрачных пленок. Вы, вероятно, обнаружите, что большие или длинные (многокадровые) анимации будут убийцей. Существуют некоторые методы минимизации воздействия анимаций, которые включают в себя возможность очистки изображений из памяти, если они не отображаются сразу (я забыл настройку). Это может привести к тому, что ваши анимации будут не такими гладкими, как вы, если бы они были в противном случае (не уверены, что Open GL ES поможет здесь, хотя).

Вероятно, вы должны прототип использовать UIViews и решить, стоит ли делать дополнительную работу для OpenGL ES. Кроме того, если вы еще не знакомы с OpenGL/Open GL ES, это крутая кривая обучения.

Ответ 2

Я использовал и Quartz и OpenGL, чтобы делать графику на iPhone, и хотя OpenGL имеет гораздо более высокую кривую обучения, она дает гораздо лучшую производительность, чем Quartz. Скажем, у вас есть сцена, которая включает в себя рисование 6 больших полупрозрачных изображений друг на друга. Кварц сделает это, но в лучшем случае вы, вероятно, получите 15 кадров в секунду. OpenGL использует чип iPhone PowerVR, а чертеж аппаратно ускорен - так что вы можете загружать эти изображения в текстуры OpenGL и визуализировать с 25-30fps без проблем.

Я бы согласился с Филом, хотя - попробуйте сделать это с помощью Quartz и посмотреть, соответствует ли он вашим потребностям. OpenGL чрезвычайно эффективен, но API не обладает некоторыми удобными функциями Quartz (например, сохранение/восстановление состояния графики).

Еще одна заметка, вы можете взглянуть на инструменты разработки Unity iPhone (http://unity3d.com/#iphone). Они используют OpenGL, но предоставляют вам IDE для создания вашей игры. Он абстрагирует весь код графического уровня, поэтому вы можете сосредоточиться на игровом процессе высокого уровня. Мой брат использует его для написания игр для iPhone, и это очень круто.

Ответ 3

Я рекомендую взглянуть на Cocos2D iPhone.

cocos2d для iPhone - это основа для создания 2D-игр, демонстраций и других графических/интерактивных приложений. Он основан на дизайне cocos2d: он использует тот же API, но вместо использования python он использует objective-c.

Ответ 4

Скорее всего OpenGl.

Ответ 5

Одним из преимуществ использования OpenGL ES было бы то, что инвестиции времени для изучения технологии могут быть применены к другим платформам/контекстам, и ваша игра потенциально более удобна для порта. Возможно, это не важно для вас.

Ответ 6

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

Ответ 7

Вам следует подумать о том, чтобы использовать намного меньше ресурсов в своей игре, Apple рекомендует не использовать более 10 мб текстуры для приложений openGL.

Попробуйте текстурный атлас, повторно используйте графику, графику на основе плитки... но избегайте использования большого количества графических ресурсов.