【问题标题】:How to visualize a depth texture in OpenGL?如何在 OpenGL 中可视化深度纹理?
【发布时间】:2011-05-21 01:16:01
【问题描述】:

我正在研究一种阴影映射算法,我想调试它在第一次通过时生成的深度图。但是,深度纹理似乎无法正确渲染到视口。有什么简单的方法可以将深度纹理显示为灰度图像,最好不使用着色器?

【问题讨论】:

  • 你能告诉我们你是如何设置它的,这样它就不能正常工作了吗?有几种方法可以做到这一点,所以如果我们能解决你的问题,那将比你不得不插入一堆外国代码更容易。

标签: opengl textures


【解决方案1】:

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

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

然后,您通常可以通过固定函数或“sampler2d”着色器统一将纹理用作“普通”灰度 2d 纹理。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 2018-10-28
        相关资源
        最近更新 更多