我阅读了很多关于使用片段着色器获取深度的信息.
如
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=234519
但我还是不知道这是否gl_FragCoord.z是线性的.
GLSL规范称屏幕上的范围为[0,1]而未提及线性与否.
我认为线性是至关重要的,因为我将使用渲染模型来匹配Kinect的深度图.
那么如果它不是线性的,那么如何在世界空间中线性化呢?
所以我最近观看了一个关于Z战斗的视频,并了解了一种简单的方法来处理它 - 主要是.给出的解决方案是实际倾斜投影,以便为更近的物体提供更多空间以进行更精确的深度测试(因为浮体只能如此精确),并且更远的物体被塞入投影的小区域.现在我对OpenGL和图形编程都很陌生(只是慢慢地工作),而且我实际上没有做任何复杂的事情,这对我来说是一个问题,但我可能需要在将来知道这一点.无论如何,所述解决方案所带来的新问题是在远处进行更糟糕的Z战斗(例如Skyrim,Rust等山区).有没有更好的解决方案,即使它具有成本效益,也不涉及图形妥协?假设说(因为我'
让我澄清一下.想想天际.注意山有时会闪烁吗?当使用OpenGL渲染场景时,所有对象都被填充或"钳制"到Z值为-1.0到1.0的小坐标平面中.然后对每个物体进行深度测试 - 树木,雪,山脉,动物,房屋,你可以命名它,这样当它们被其他东西覆盖时就不会画出东西.然而,浮点只能达到一定的精度水平,因此将数百个物体夹入一个微小的空间不可避免地导致一些物体具有完全相同的Z坐标,并且这两个物体在屏幕上闪烁在一起,称为"Z" -战斗".我问是否每个物体的深度(z-)坐标都可以投入双打,