Требуется ли OpenGL для моей игры на iPhone?
на iPhone:
Если я пишу игру, которая имеет несколько уровней, с несколькими анимациями (последовательности изображений), jpg и png (прозрачный), некоторые полный экран, а некоторые нет, некоторые зациклены, а некоторые играли только один раз. Как лучше всего это сделать? Каждый уровень может иметь до 10 МБ изображений. Добавьте к этому музыку и видео (cut scenes). Вся 2D графика, никаких 3D моделей.
требуется ли OpenGL? Или это может быть достигнуто с помощью Quartz или Core Animation?
7 ответов
Я делаю подобное, используя UIViews и немного основной графики (Quartz 2D), и он отлично работает. Я обнаружил, что пользовательский рисунок в Core Graphics подталкивает его немного дальше, tho - UIViews лучше всего работает, когда данные изображения, а не рисовать себя. Также следите за большим количеством пленок. Вы, вероятно, найдете, что большие или длинные (много кадров) анимации будут убийцей, хотя. Есть некоторые методы для минимизации воздействия анимации, которая включает в себя позволяет очистить изображения из памяти, если не отображается сразу (я забыл настройку). Это может привести к тому, что ваши анимации не будут такими гладкими, как вы в противном случае (не уверен, что Open GL ES поможет здесь).
вы должны, вероятно, прототип, используя UIViews, и решить, стоит ли делать дополнительную работу для OpenGL ES. Кроме того, если вы еще не знакомы с OpenGL/ Open GL ES, это крутая кривая обучения.
Я использовал кварц и OpenGL для создания графики на iPhone, и хотя OpenGL имеет гораздо более высокую кривую обучения, он дает гораздо лучшую производительность, чем кварц. Допустим, у вас есть сцена, которая включает в себя рисование 6 больших, полупрозрачных изображений друг на друга. Кварц сделает это, но вы, вероятно, получите 15fps в лучшем случае. OpenGL использует преимущества чипа PowerVR iPhone, и рисунок ускоряется аппаратным обеспечением , поэтому вы можете загружать эти изображения в текстуры OpenGL и визуализировать на 25-30fps не проблема.
Я бы согласился с Филом, хотя-попробуйте сделать это с помощью кварца и посмотреть, отвечает ли он вашим потребностям. OpenGL чрезвычайно мощный, но API не хватает некоторых удобных функций Quartz (таких как сохранение/восстановление графического состояния).
одна другая заметка полностью, вы можете взглянуть на инструменты разработки iPhone Unity (http://unity3d.com/#iphone). Они используют OpenGL, но предоставляют вам IDE для создания вашей игры. Он абстрагирует весь код графического уровня, поэтому вы можете сосредоточиться на геймплее высокого уровня. Мой брат использует его для написания игр для iPhone, и это очень круто.
Я рекомендую взглянуть на Cocos2d отличается для iPhone.
Cocos2d для iPhone-это платформа для создания 2D игр, демо и других графических/интерактивные приложения. Он основан на дизайне cocos2d: он использует тот же API, но вместо использования python он использует objective-c.
одним из преимуществ использования OpenGL ES было бы то, что инвестиции времени для изучения технологии могут быть применены к другим платформам/контекстам, и ваша игра потенциально более удобна для портов. Это может быть не важно для вас.
Я бы предложил использовать кварц. OpenGL ES действительно лучше всего подходит для 3d-материалов. Однако оба работают довольно хорошо, поэтому, если вы уже знаете OpenGL ES, это нормально использовать.
вы должны рассмотреть возможность использования гораздо меньше ресурсов в вашей игре, Apple рекомендует не использовать более 10 МБ в текстуре для приложений openGL.
попробуйте атлас текстуры, повторно использовать графику, графику на основе плитки...но избегайте использования графических ресурсов.