当我注意到我的结果不正确时,我需要对gl_Position以外的东西进行手动透视划分,所以我做了一些实验。
我注意到,如果我让它使用默认转换,则生成的深度值(gl_Position.z)是正确的:
void main()
{
gl_Position = MVP *vertexPosition;
}
然而,当尝试手动进行透视分割时,深度值是不一样的,即使它应该是等价的(?):
void main()
{
gl_Position = MVP *vertexPosition;
gl_Position.xyz /= gl_Position.w;
gl_Position.w = 1.0;
}
那么,透视分割在 Vulkan 中的工作方式是否有所不同?如果是这样,怎么做?
视口的深度范围设置为 [0,1],以防对此有任何影响。