如何在OpenGL中可视化深度纹理?

时间:2009-03-25 19:09:46

标签: opengl textures

我正在研究阴影贴图算法,我想调试它在第一次传递时生成的深度贴图。但是,深度纹理似乎无法正确呈现到视口。有没有简单的方法可以将深度纹理显示为灰度图像,最好不使用着色器?

3 个答案:

答案 0 :(得分:8)

您可能需要更改深度纹理参数以将其显示为灰度级别:

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE )
glTexParameteri( GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE )

然后,您可以通常使用纹理作为“普通”灰度2d纹理,通过固定功能或“sampler2d”着色器均匀。

答案 1 :(得分:2)

深度纹理(2D)可以像任何常规灰度纹理一样使用。唯一的问题可能是它内部的值太高而你只能看到白色纹理。如果是这种情况,可以使用创建深度纹理时使用的z-near和-far平面(或使用着色器或glTexEnv缩放值)。

答案 2 :(得分:0)

当然,只需将深度纹理绑定到您喜欢的纹理单元,启用纹理,然后绘制2D四边形!您还可以调整四边形的大小以仅填充屏幕的一部分,以便您可以实时查看阴影贴图。

OpenGL还具有可以将纹理复制到数组中的功能。您可以将其保存为图像,并使用图像查看器进行查看。