2011-04-22 6 views
8

Estoy renderizando mi escena con una textura. Esto funciona bien, excepto que las pruebas de profundidad no funcionan. ¿Cómo habilito las pruebas de profundidad si se renderiza a una textura fuera de pantalla? Estoy utilizando la clase FrameBuffer http://www.opengl.org/news/comments/framebuffer_object_fbo_c_class_available_with_example_application/Cómo utilizar la prueba de profundidad cuando se renderiza en un búfer fuera de la pantalla y luego en la textura

glGetIntegerv(GL_DRAW_BUFFER, &drawBuffer); 
frameBuffer->Bind(); 
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); 
rAngle += 0.3f; 
glUseProgram(0); 
drawSpinningTeapot(); 
FramebufferObject::Disable(); 

glDrawBuffer(drawBuffer); 
glViewport(0, 0, WINDOW_WIDTH,WINDOW_HEIGHT); 
glClear(GL_COLOR_BUFFER_BIT); 

glUseProgram(g_program); 
glEnable(GL_DEPTH_TEST); 
glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D,tex1); 
texSampler = glGetUniformLocation(g_program,"texture"); 
glUniform1f(texSampler, 0); 
glActiveTexture(GL_TEXTURE0); 
glBegin(GL_QUADS); 
{ 
    glTexCoord2f(0, 0); glVertex3f(-1, -1, -0.5f); 
    glTexCoord2f(1, 0); glVertex3f(1, -1, -0.5f); 
    glTexCoord2f(1, 1); glVertex3f(1, 1, -0.5f); 
    glTexCoord2f(0, 1); glVertex3f(-1, 1, -0.5f); 
} 
glEnd(); 
glDisable(GL_TEXTURE_2D); 

Respuesta

12

Es necesario adjuntar una memoria intermedia o una textura a la GL_DEPTH_ATTACHMENT además del apego color de renderizado. He aquí un buen tutorial para empezar:

http://www.songho.ca/opengl/gl_fbo.html

+0

He estado buscando por todo el lugar de esto, gracias! – axel22

+0

Me pregunto * por qué * exactamente esto debería hacerse. –

Cuestiones relacionadas