【问题标题】:Enabling fast Z clear in OpenGL在 OpenGL 中启用快速 Z 清除
【发布时间】:2020-08-26 17:16:39
【问题描述】:

为了分层渲染,我发现自己需要每帧多次清除depth buffer

在 2000 年代初期,由于当时的带宽有限,清除 Z 实际上非常昂贵。因此,AMD 提出了像 HyperZ 这样的技术,其中包括针对深度缓冲区的快速 Z 清除操作。

在这个时代,我是否可以假设所有制造商都实现了深度值的快速清除,并且默认启用它?

或者是否有我应该注意的 OpenGL 扩展,或者我需要在某处切换的设置?

顺便说一下,我的目标是 OpenGL Core Profile 3.2。

【问题讨论】:

    标签: opengl depth-buffer opengl-extensions


    【解决方案1】:

    如果不了解您正在尝试做什么,我无法确定您的问题的最佳解决方案。但是,有一个核心配置文件功能可能会提供您想要的:glClearBuffer

    float far_value = 1.0f;
    glClearBufferfv(GL_DEPTH, 0, & far_value);
    

    这通过将深度设置为最大值来有效地清除深度缓冲区。现在,您可能想要绘制也具有最大深度的片段。 glDepthFunc(GL_LEQUAL) 在这种情况下会很有用。 GL_LESS 是初始默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-24
      • 2015-08-12
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多