在OpenGL中启用快速Z清除

在OpenGL中启用快速Z清除,opengl,depth-buffer,opengl-extensions,Opengl,Depth Buffer,Opengl Extensions,为了分层渲染,我发现自己需要在每帧中清除多次 在21世纪初,由于当时带宽有限,清除Z实际上相当昂贵。因此AMD提出了类似的技术,包括深度缓冲区的快速Z-clear操作 在这个时代,我可以假设所有制造商都实现了深度值的快速清除,并且默认启用了它吗 或者是有一个OpenGL扩展我应该知道,或设置我需要切换到某个地方 顺便说一句,我的目标是OpenGL Core Profile 3.2。如果不知道您要做什么,我无法确定您的问题的最佳解决方案。但是,有一个核心概要文件函数可以提供您想要的内容: 通过将深

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

在21世纪初,由于当时带宽有限,清除Z实际上相当昂贵。因此AMD提出了类似的技术,包括深度缓冲区的快速Z-clear操作

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

或者是有一个OpenGL扩展我应该知道,或设置我需要切换到某个地方


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

如果不知道您要做什么,我无法确定您的问题的最佳解决方案。但是,有一个核心概要文件函数可以提供您想要的内容:


通过将深度设置为最大值,可以有效地清除深度缓冲区。现在,您可能希望在同样具有最大深度的碎片上绘制<代码>glDepthFunc(GL_LEQUAL)在这种情况下很有用
GL_LESS
是初始默认值。

如果不知道您正在尝试做什么,我无法确定您的问题的最佳解决方案。但是,有一个核心概要文件函数可以提供您想要的内容:

通过将深度设置为最大值,可以有效地清除深度缓冲区。现在,您可能希望在同样具有最大深度的碎片上绘制<代码>glDepthFunc(GL_LEQUAL)在这种情况下很有用
GL_LESS
是初始默认值

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