我正在学习如何使用立方体贴图绘制天空盒,参考资料resource。
我已经了解了如何优化渲染天空盒的部分。我明白了,与其先渲染天空盒,导致视口中的
现在,在我们得到每个片段最大深度值为
这里我有点困惑。 如果我们最后渲染天空盒,并且其深度值等于
我已经了解了如何优化渲染天空盒的部分。我明白了,与其先渲染天空盒,导致视口中的
width*height
片段被计算,然后再被其他对象覆盖,最好将其放在最后绘制,并将其深度值伪造为1.0f
,通过将天空盒顶点着色器的gl_Position
赋值为gl_Position = pos.xyww
,从而使每个gl_FragCoord.z
由于透视除法而等于1.0f
。现在,在我们得到每个片段最大深度值为
1.0f
的天空盒之后,他将深度函数从GL_LESS
更改为GL_LEQUAL
。这里我有点困惑。 如果我们最后渲染天空盒,并且其深度值等于
1.0f
,为什么需要将深度函数改为GL_LEQUAL
?如果我们在场景中渲染其他对象的深度值可能会小于1.0f
,因此将其设置为GL_LESS
是否就足够了呢?现在,如果我们将天空盒的深度函数设置为GL_LESS
,它只会通过深度值小于实际在z-buffer
中的值的片段,这可能只通过其他对象没有覆盖的片段,那么我们为什么需要GL_LEQUAL
呢?