Вопросы по взлому проекта шаблона OpenGL ES2 из Xcode 4

#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