在OpenGL中反转深度测试?

时间:2018-02-11 01:51:34

标签: opengl fragment-shader depth-testing

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

glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);

所以我认为这样做:

glDepthFunc(GL_GREATER);
glEnable(GL_DEPTH_TEST);

还允许我渲染最远离相机的碎片。但是在设置这样的标志时我看不到输出。 (我的申请没有进行其他修改)

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

1 个答案:

答案 0 :(得分:5)

深度范围从0到1 ...
清除深度时,默认情况下整个数组都填充1 你可以用glClearDepth(0)改变它 并且您可以使用glDepthRange(near, far)

更改范围

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

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

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