深度渲染工件

时间:2010-12-07 08:00:07

标签: opengl graphics 3d glsl

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

这是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

1 个答案:

答案 0 :(得分:4)

你的问题很可能来自于你的投影矩阵在近平面和远平面之间有太多的分离(意味着像素靠近在一起会遇到浮点精度问题)。缩小两架飞机之间的差距,这应该可以解决你的Z战斗问题。