1

在我的程序中,网格被正确显示,但是当我将 device.transform.view 和 device.transform.projection 矩阵从左手系统更改为右手系统时,网格不再正确显示,即背面脸部被照亮,正面是透明的!有谁知道需要更改哪些内容才能获得正确的显示

原始矩阵:

device.Transform.View = Matrix.LookAtLH(vFrom, vAt, vUp);
device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, fAspect, 0f, 100f);

修改:

device.Transform.View = Matrix.LookAtRH(vFrom, vAt, vUp);
device.Transform.Projection = Matrix.PerspectiveFovRH((float)Math.PI / 4, fAspect, 0f, 100f);
4

1 回答 1

1

好吧,我希望这两个矩阵都会在您将近平面设置为 0 的基础上严重失败。它确实应该是一些像 0.0001f 这样的小 epsilon。

要记住的另一件事是,通过交换系统的惯用手,您很可能会颠倒 tris 的缠绕顺序。

您需要将剔除渲染状态设置为顺时针而不是逆时针/逆时针。

IE

dxDevice.SetRenderState( RenderState.CullMode, Cull.Clockwise );
于 2010-06-21T16:03:25.520 回答