2010-08-14 4 views
1

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

Например: Из меню игры в действительную игру. Сначала выберите меню, затем нажмите кнопку «начать игру» и загрузите игровой режим и получите приятное сочетание/преобразование из меню в игровой этап.

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

ответ

1

Ну, я нашел то, что искал в

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

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

0

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

[EAGLContext setCurrentContext:oglContext]

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

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

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