На iOS с OpenGLES как иметь несколько представлений?

На iOS, если я хочу наложить два вида, а затем смешать одну сцену с другой.

Например: от меню игры до самой игры. Сначала выберите меню, затем нажмите ("начать игру"), загрузите вид игры и сделайте хорошее смешивание / преобразование из меню на игровую сцену.

Это не конкретный вопрос для смешивания, а о том, как обрабатывать несколько представлений в приложении OpenGL. Я читал и играл с некоторыми основами о том, как рисовать линии, объекты, молнии, цвета и тому подобное, но я полностью зелен, когда речь идет о том, чтобы собрать все это вместе в реальном (а не в одном статическом виде) приложении OpenGLES. Я имею в виду, что вы должны использовать разные взгляды, верно? Или этот шаблон проектирования с различными контроллерами представления и представлениями, к которым мы все привыкли в повседневном программировании UIKit, неприменим, когда речь идет об OpenGLES? Потому что я просто не могу этого сделать. И я не могу найти никаких примеров.

2 ответа

Решение

Ну, я нашел то, что я искал в http://cocos2d-iphone.org/

Он дает вам слои, переходы сцен, готовые к работе меню, спрайты и т. Д. Поэтому я перестал беспокоиться о том, как это сделать, и просто сейчас использую кокосы.

Не стесняйтесь, если вы новичок в OpenGL, это облегчит вашу жизнь в 147* раз. И кстати... вы также можете объединить его с 3D.

Если вы хотите, чтобы в вашем приложении было несколько одновременно видимых представлений OpenGL в форме CAEAGLLayers, важно помнить следующее:

[EAGLContext setCurrentContext:oglContext]

изменит контекст не только для представления, которое выполняется в данный момент, но и для всех представлений EAGL вашего приложения. Это может проявиться путем создания других представлений, которые работали для замораживания, поскольку вызовы OpenGL теперь переходят к последнему представлению, которое выполняло [EAGLContext setCurrentContext:oglContext],

Чтобы обойти это, вы должны позвонить [EAGLContext setCurrentContext:oglContext] каждый раз, когда вызывается ваш экземпляр view, прежде чем делать какие-либо вызовы OpenGL.

В моем приложении я устанавливаю контекст только один раз, в представлении initWithFrame, Это работало хорошо в течение многих лет. Как только я создал второй экземпляр этого представления, первое представление перестало обновляться. Теперь я устанавливаю контекст в своих вызовах обновления, прежде чем делать какие-либо вызовы CVOpenGLES.

Другие вопросы по тегам