在OpenGL中反转深度测试?

Mak*_*gan 2 opengl fragment-shader depth-testing

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

glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
Run Code Online (Sandbox Code Playgroud)

所以我认为这样做:

glDepthFunc(GL_GREATER);
glEnable(GL_DEPTH_TEST);
Run Code Online (Sandbox Code Playgroud)

也可以让我渲染距离相机最远的碎片.但是在设置这样的标志时我看不到输出.(我的申请没有进行任何其他修改)

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

Pud*_*dle 5

深度范围从0到1 ...
当您清除深度时,整个阵列默认填充为1 ...
您可以更改它,glClearDepth(0)
您可以更改范围glDepthRange(near, far)


GL_LESS(默认)声明:
"如果传入的深度值小于存储的深度值,则通过."

GL_GREATERstates:
"如果传入的深度值大于存储的深度值,则通过."

所以你需要一些清除深度(0)以获得更高的深度.(仅查看​​最远的碎片)