2010-12-07 94 views
0

我深度渲染场景到不同的帧缓冲区,问题有点难以解释,但正如你可以在图像中看到的深度图,它实际上遭受像网格一样的工件。你有什么想法是什么来源?深度渲染伪影

这里是FB创建代码:

self.shadowTexture = glGenTextures(1);   
    glBindTexture(GL_TEXTURE_2D, self.shadowTexture); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 

    glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, w, h, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, None); 

    glBindTexture(GL_TEXTURE_2D, 0); 
    self.fbo = glGenFramebuffers(1) 
    glBindFramebuffer(GL_FRAMEBUFFER_EXT, self.fbo) 
    glDrawBuffer(GL_NONE); 
    glReadBuffer(GL_NONE); 
    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D, self.shadowTexture, 0); 

alt text

回答

4

你的问题很可能是来自于你的投影矩阵具有近及远的飞机(指并拢像素之间太多的分离 - 事实正在遭受浮点精度问题)。缩小2架飞机之间的差距,这应该解决你的Z战斗问题。

+0

谢谢Goz,似乎是这样。我实际上正在研究阴影贴图,对光线和照相机投影矩阵使用合理的值是非常棘手的。 – 2010-12-07 13:53:49