在 OpenGL 中反转深度测试?

Inverting depth testing in OpenGL?

如果希望正常渲染,渲染离相机最近的对象,您可以按如下方式设置 OpenGL 标志:

glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);

所以我假设这样做:

glDepthFunc(GL_GREATER);
glEnable(GL_DEPTH_TEST);

还允许我渲染离相机最远的片段。但是,在设置这样的标志时,我看不到任何输出。 (没有对我的应用程序进行其他修改)

如何渲染离相机最远的片段?

深度范围是从 0 到 1。
当您清除深度时,整个数组默认填充为 1。
您可以使用 glClearDepth(0)
更改它 您可以使用 glDepthRange(near, far)

更改范围

GL_LESS(默认)表示:
“如果传入的深度值小于存储的深度值,则通过。”

GL_GREATER 状态:
“如果传入的深度值大于存储的深度值,则通过。”

所以你需要一些清理深度(0's)来堆积更大的深度。 (仅查看​​最远的片段)