Требуется ли OpenGL для моей игры для iPhone? - PullRequest
10 голосов
/ 04 июня 2009

На iPhone:

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

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

Ответы [ 7 ]

8 голосов
/ 04 июня 2009

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

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

7 голосов
/ 04 июня 2009

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

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

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

6 голосов
/ 04 июня 2009

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

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

4 голосов
/ 04 июня 2009

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

3 голосов
/ 05 июня 2009

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

1 голос
/ 04 июня 2009

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

0 голосов
/ 21 августа 2009

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

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

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