2

我是游戏编程的新手,也是 DirectX 和 SlimDX 的新手。目前,我正在将 MDX 代码转换为 SlimDX 代码,但遇到了一个无法在 SlimDX 文档中找到的问题。我正在尝试“取消投影”一个矢量代码,如下所示:

MDX 代码:

Vector3 p1 = new Vector3(x, y, device.Viewport.MinZ);
p1.Unproject(device.Viewport, device.Transform.Projection, device.Transform.View, device.Transform.World);

我转换的 SlimDX 代码如下:

Vector3 p1 = new Vector3(x, y, device.Viewport.MinZ);
p1 = Vector3.Unproject(p1, device.Viewport.X, device.Viewport.Y, device.Viewport.Width,
device.Viewport.Height, device.Viewport.MinZ, device.Viewport.MaxZ, 
device.GetTransform(TransformState.World));

使用上面的 SlimDX 代码我无法获得正确的结果,请就此提出建议,即如何在 SlimDX 中取消投影矢量。

4

1 回答 1

0

我不熟悉 SlimDX,但在 MDX 的情况下,您将世界、视图和投影矩阵传递给 Unproject 函数(正如您应该这样做的那样),而在您的第二个示例中,您只传递世界矩阵。假设 Vector3.Unproject 函数只接受一个矩阵作为参数,请尝试传递 World * View * Projection 的乘积。

于 2011-04-12T20:37:28.083 回答