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

Класс CCSprite имеет свойство ограничивающего прямоугольника, которое является CGRect:

  CCSprite *sprite = [CCSprite spriteWithFile: @"file.png"];
  int width = [sprite boundingBox].size.width;

Я добавил методы ширины и высоты в мой подкласс CCSprite.

-(CGFloat) width
{
    return [self boundingBox].size.width;
}

-(CGFloat) height
{
    return [self boundingBox].size.height;
}
10
задан genpfault 28 April 2010 в 21:43
поделиться

7 ответов

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

Вероятно, вам следует прототипировать с помощью UIViews, а затем решить, стоит ли проделывать дополнительную работу для OpenGL ES. Также,

8
ответ дан 3 December 2019 в 15:22
поделиться

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

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

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

7
ответ дан 3 December 2019 в 15:22
поделиться

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

3
ответ дан 3 December 2019 в 15:22
поделиться

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

4
ответ дан 3 December 2019 в 15:22
поделиться

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

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

6
ответ дан 3 December 2019 в 15:22
поделиться

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

1
ответ дан 3 December 2019 в 15:22
поделиться

You should consider using a lot of less resources in your game, Apple recommends not to use more than 10 mb in texture for openGL apps.

Try texture atlas, reuse graphics, tile based graphics...but avoid to use to much graphic assets.

0
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: