Проблема с включением теста глубины OpenGL ES на iPhone.Какие шаги необходимы? - PullRequest
2 голосов
/ 26 марта 2010

Я помню, как столкнулся с этой проблемой, когда начал использовать OpenGL в OS X. В конце концов я решил ее, но думаю, что это было просто благодаря использованию glut и c ++ вместо Objective-C ...

Строки кода, которые у меня есть в init для ES1Renderer, следующие:

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);

Тогда в методе render у меня есть это:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Полагаю, мне не хватает чего-то особенного для iPhone или ES. Какие еще шаги необходимы для включения проверки глубины?

Спасибо

Ответы [ 3 ]

4 голосов
/ 27 марта 2010

Инструкции здесь , если у кого-то еще есть эта проблема. Код также ниже:

glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, 320, 480);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);

GLenum status = glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) ;
if(status != GL_FRAMEBUFFER_COMPLETE_OES) {
    NSLog(@"failed to make complete framebuffer object %x", status);
}
0 голосов
/ 26 марта 2010

Вам нужно выделить буфер глубины сам. Выделите новый буфер визуализации с внутренним форматом DEPTH_COMPONENT16 или DEPTH_COMPONENT24 и присоедините его к объекту кадрового буфера.

0 голосов
/ 26 марта 2010

#define USE_DEPTH_BUFFER 1, если вы используете шаблон проекта OpenGL ES. Это устанавливает буфер глубины где-нибудь в EAGLView.m.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...