针对特定深度值而不是片段的实际深度进行深度测试

问题描述 投票:0回答:1

[我想通过使用glDepthFunc(GL_EQUAL)并写入每个具有1.0深度(最高和默认值)的像素,在写入深度缓冲区的所有内容后面绘制一些基元

但是,要使其正常工作,我必须忽略在原始图元上计算出的Z深度,迫使它们对所有原始图元进行测试,好像它们都是1.0

不管在顶点着色器中计算出的实际z深度如何,强制在特定图形中将所有片段测试为具有1.0的z深度的最简单方法是什么?

opengl opengl-3 depth-testing
1个回答
0
投票
如果要使所有片段的深度都为1.0,则必须确保规范化设备坐标的z分量为1.0。归一化的设备坐标是通过裁剪坐标的perspective divide计算出来的(将其视为gl_Position.xyz / gl_Position.w)。

在设置剪辑坐标之后,将gl_Position.z设为gl_Position.w等于gl_Position.z / gl_Position.w

gl_Position.z = gl_Position.w;

但是请注意,也可以通过为gl_FragDepth分配值,在片段着色器中设置片段的深度:(当然,这阻止了gl_FragDepth的发生)

Early Fragment Test

© www.soinside.com 2019 - 2024. All rights reserved.