iPhone и iPad: Является ли OpenGL ES Universal App трудной задачей для нескольких устройств? - PullRequest
3 голосов
/ 13 ноября 2010

У меня был опыт написания сенсорного приложения Cocoa в качестве универсального приложения (для ipad, iphone), и это было не слишком сложно Мне нужно было только использовать разные .xib для каждого устройства, но по крайней мере это был один и тот же двоичный файл.

Возможно ли иметь универсальное приложение opengl es? Это сложно, учитывая, что у меня должно быть разное разрешение для каждого устройства (iphone 3gs, iphone 4, ipad)? Так что, скорее всего, мой код будет отличаться для каждого устройства ???

Ответы [ 2 ]

6 голосов
/ 13 ноября 2010

Хотя сложность является субъективной мерой, я бы сказал, что процесс разработки OpenGL-ES-ориентированного приложения для различных устройств проще, чем приложения, основанные на более стандартных элементах пользовательского интерфейса. Если для стандартной версии приложения для iPad для iPad может потребоваться совершенно иная схема интерфейса, если вы делаете полноэкранный чертеж OpenGL ES, вам просто нужно настроить масштаб слоя рендеринга до соответствующего размера экрана.

Например, взгляните на код моего приложения Molecules (доступно по лицензии BSD). Это универсальное приложение для iPhone / iPad, которое разделяет много кода между двумя интерфейсами. Фактически, почти ни одна из частей OpenGL ES не изменяется в зависимости от платформы.

Когда дело доходит до чего-то вроде дисплеев Retina, вам просто нужно добавить немного кода в инициализации вашего представления CAEAGLLayer-хостинга, чтобы учесть новый коэффициент масштабирования:

if ([self respondsToSelector:@selector(setContentScaleFactor:)])
{
    self.contentScaleFactor = [[UIScreen mainScreen] scale];
}

Больше ничего не нужно менять, и ваш контент OpenGL ES теперь будет отображаться с более высоким разрешением.

Вероятно, самая большая проблема, с которой вы столкнетесь, заключается в том, что при переходе на дисплеи с более высоким разрешением вы можете обнаружить, что скорость заполнения ограничена по сравнению с тем, что было раньше на старых iPhone. Если вы видите, что использование Renderer Utilization приближается к 100% в инструменте OpenGL ES, это то, что происходит. Для дисплеев Retina может потребоваться рендеринг не с полным 2-кратным масштабным коэффициентом, а с более низким значением.

0 голосов
/ 13 ноября 2010

Я не могу говорить с вашими подробностями, но у меня есть универсальное приложение, и оно использует OpenGL-ES. Для моих целей вызов glViewport () заботится о вещах.

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