Хотя сложность является субъективной мерой, я бы сказал, что процесс разработки 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-кратным масштабным коэффициентом, а с более низким значением.