在DirectX中,什么值存储在深度值中?这在DX9和DX11之间有区别吗?

时间:2015-04-12 00:24:16

标签: c++ directx directx-11 hlsl directx-9

我在DirectX 11和DirectX 9中使用相同的投影/视图矩阵渲染相同的几何体。顶点着色器使用

Output.oPosition = mul(float4(Position, 1.0), mul(mul(mHookModel, mHookView), mHookProjection));

在两个API中。然后我回读每个API中的深度模板/ z缓冲区值。我在两个API之间获得了非常不同的值。在DX9中,对于场景的一部分,我在0.17和0.99之间。对于相同范围的点,我在DX11中得到0.08和0.10之间。相同的几何图形,相同的矩阵,非常简单的着色器。有没有人知道顶点着色器(插值)中的哪些值最终存储在深度模板/ z缓冲区中,哪些会导致这样的差异?

1 个答案:

答案 0 :(得分:2)

假设您将视口的MinZ / MaxZ设置为相同以及投影中的近和远剪辑值,两个API在深度缓冲区中的存储没有区别矩阵在两个版本中设置相同。