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

4

我正在开发一个阴影映射算法,想要在第一次渲染中调试生成的深度图。然而,深度纹理似乎无法正确地呈现在视口中。有没有简单的方法将深度纹理显示为灰度图像,最好不使用着色器?


你能展示一下你是如何设置它的吗?这样我们才能找出它为什么不能正常工作。有几种方法可以解决这个问题,如果我们能够修复你的设置,那将比你不得不插入大量外来代码更容易。 - Jay Kominek
3个回答

8

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

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

接着,您可以将纹理视为“普通”的灰度2D纹理,通过固定功能或“sampler2d”着色器统一使用。


2

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


0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接