Возможно ли / выполнить переключение между представлением OpenGL ES и UIView в одном приложении?

Представьте себе приложение для iPhone, которое начинается со стандартного UIView, показывающего некоторые кнопки и прочее. Затем есть кнопка статистики, вы нажимаете на нее, и UIView отодвигается. Вместо этого появляется представление OpenGL ES, которое показывает красивую статистическую кривую.

Я знаю, что вы можете как-то смешать OpenGL ES с UIView, но люди говорят, что это плохая идея. Применимо ли это также, если все в полноэкранном режиме, либо openGL ES || UIView?


person Thanks    schedule 21.07.2009    source источник


Ответы (3)


В своем приложении я также смешиваю элементы OpenGL и Cocoa UI без плохих результатов. Я даже помещаю UIViews поверх представления OpenGL, и результат работает хорошо. Если вы хотите его увидеть, в моем профиле вы найдете ссылку.

person Nikolai Ruhe    schedule 21.07.2009

Вы определенно можете это сделать; У меня есть приложение OpenGLES, которое использует UIAlerts и UIActionSheets, и оно отлично работает. Я думаю, вы просто хотите избежать чего-то вроде наличия слоя OpenGL, а затем кучи элементов пользовательского интерфейса, а затем еще одного прозрачного слоя OpenGL поверх этого.

person David Maymudes    schedule 21.07.2009

На iPhone вы всегда выполняете рендеринг в UIView, и это представление может иметь подпредставления, как и любые другие.

Нет никакой разницы между наличием одного представления OGL и заменой множества представлений (включая одно представление OGL) с помощью контроллера навигации или базовой анимации.

Наличие некоторых кнопок пользовательского интерфейса или меток над представлением OGL не замедлит работу вашего приложения, но вы должны убедиться, что они не покрывают большую часть экрана и не обновляют свое содержимое слишком часто. Плохая идея использовать, например, быстро прокручивающуюся метку счета, обновляемую 20 раз в секунду. В этом случае вы должны либо ограничить скорость обновления, либо использовать элементы пользовательского интерфейса на основе OGL.

Убедитесь, что ваше представление OGL настроено как непрозрачное и не использует формат пикселей с альфа-каналом, если это действительно не нужно. Представления OGL с альфа-смешиванием работают медленно.

person noop    schedule 21.01.2010