#ios #ios4 #opengl-es-2.0
#iOS #ios4 #opengl-es-2.0
Вопрос:
Создайте новый проект из шаблона opengl с помощью xcode4, вы увидите перемещение квадрата одного цвета.
Я хочу поместить еще два небольших представления, чтобы показать то же самое. Что я сделал, так это добавил два
EAGLView *glView1;
EAGLView *glView2;
Затем настройте с помощью property / systhesize и т.д. И того же кодирования с помощью self.просмотр выглядит следующим образом
[(EAGLView *)self.view setContext:context];
[(EAGLView *)self.view setFramebuffer];
if (!glView2) {
glView2 = [[EAGLView alloc] init];
}
[self.glView2 setContext:context2];
[self.glView2 setFramebuffer];
if (!glView1) {
glView1 = [[EAGLView alloc] init];
}
[self.glView1 setContext:context];
[self.glView1 setFramebuffer];
Сделайте то же самое для другого места, которое сделал self.view. Также сделайте правильные вещи для ссылки в interface builder. (xcode4)
Но результат показывает
Я обнаружил, что последний порядок рисования в drawFrame определит, какое окно будет отображаться
[self.glView1 setFramebuffer];
[self.glView2 setFramebuffer]; // these will not show , but if put last, it will show
[(EAGLView *)self.view setFramebuffer]; // this will work
Имеет ли смысл объяснять мою цель и проблемы?
Большое спасибо, что указали на первопричину и помогли мне разобраться с этим.
Ответ №1:
Вам нужно прочитать об OpenGL ES 2.0 («OGLES2.0»). Вы не должны использовать несколько экземпляров EAGLView. Вам нужен только один, и вы используете команды OGLES2.0 для рисования на нем.
OpenGL нелегко освоить, и вам придется потратить много часов своего времени, прежде чем вы сможете добиться с его помощью даже простого рендеринга. Вам следует обратиться к внешней библиотеке, такой как cocos2D, которая поможет вам достичь желаемого. Внимательно прочитайте руководства и документацию и поэкспериментируйте. Вам все равно потребуется много времени для достижения приятных результатов, но гораздо меньше, чем если бы вы сами напрямую использовали OGLES