我正在学习如何使用来自以下资源的立方体贴图绘制天空盒。
我已经到了他谈到我们如何优化天空盒渲染的部分。我明白了,而不是先渲染天空盒,这将导致width*height
计算视口片段然后只被其他对象透支,最好最后绘制它并1.0f
通过分配gl_Position
天空盒来伪造它的深度值由于透视分割,顶点着色器gl_Position = pos.xyww
基本上使每个gl_FragCoord.z
等于。1.0f
现在我们得到一个天空盒,它的每个片段都具有最大深度值,1.0f
他将深度函数更改为GL_LEQUAL
而不是GL_LESS
.
这是我有点困惑的地方。
如果我们最后渲染天空盒并且它的深度值等于1.0f
为什么我们需要将深度函数更改为GL_LEQUAL
?将其设置为是否足够,GL_LESS
因为如果我们渲染场景中的所有其他对象,它的深度值可能会小于1.0f
所以它会将其值写入z-buffer
小于的值1.0f
。现在,如果我们将天空盒的深度函数设置为GL_LESS
它,那么它只会传递深度值小于实际值的片段,z-buffer
这可能只会传递其他对象没有覆盖的片段,那么为什么我们需要GL_LEQUAL
?