1

我想在 Directx 11 中将屏幕坐标转换为世界坐标。我发现我可以使用 function 轻松完成XMVector3Unproject。有一个问题,我想选择我自己的 Z 坐标来告诉函数我的点离相机有多远(屏幕坐标是 2d,世界坐标是 3d)。根据我的观察,我必须弄清楚我的点在深度缓冲区上的位置。

我的深度缓冲区范围从 0.0 到 1.0(通常情况下)。我的近平面是 0.1f,远平面是 1000.0f。我知道深度缓冲区上的值不是均匀分布的。事实上,对于我的设置,20.0f 在深度缓冲区中大约为 0.995(接近平面,但在深度缓冲区中几乎一直向下)。我如何找出这些值?

4

1 回答 1

1

这个公式有效:

z'=(远+近)/(2*(远-近))+1/z*(-远*近)/(远-近)+1/2

其中z是与相机的距离(在我上面的示例中为 20)near并且far是近处和远处的剪裁平面(分别为 0.1 和 1000)。来源:Z 缓冲

于 2015-06-19T15:56:10.227 回答