Opengl,将深度纹理绘制成方形

时间:2013-12-20 14:34:35

标签: opengl graphics depth-buffer

这是我设置深度纹理的方法:

glBindTexture(GL_TEXTURE_2D, gbuffer_tex[2]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, int(screen_width), int(screen_height), 0, GL_DEPTH_COMPONENT, GL_FLOAT, nullptr);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);

glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, gbuffer_tex[0], 0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, gbuffer_tex[1], 0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, gbuffer_tex[2], 0);

然后当我将场景绘制到其上时激活帧缓冲。一切正常。 如果我在gDebugger中运行程序,深度纹理看起来没问题。但是当我试图绘制它时,它只是黑色。如果我绘制一个设置为颜色附件的纹理,它看起来不错。 它的深度纹理就是黑色。

我的片段着色器看起来像这样:

in VS_OUT { vec2 UV; } vs_in;
layout (binding = 3) uniform sampler2D depth_texture;
out vec4 fragColor;
void main()
{
  vec2 tex_coord = vec2(vs_in.UV.x, -vs_in.UV.y); 
  float texture_color = texture(depth_texture, tex_coord).r;
  fragColor = vec4(texture_color, texture_color, texture_color, 1.0);
}

当我将鼠标悬停在gDebugger中的深度纹理上时,值介于0.96和1.0之间。所以它应该是白色而不是黑色。

0 个答案:

没有答案