切换视图和投影矩阵后,DirectX网格无法正确显示

时间:2010-06-21 10:09:45

标签: c# directx zbuffer culling

在我的程序中,网格正确显示,但是当我将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);

1 个答案:

答案 0 :(得分:1)

好吧,我希望这两个矩阵都能在你将近平面设置为0的基础上失败。它确实应该像0.0001f这样的小ε。

要记住的另一件事是,通过交换系统的手性,你很可能会反转tris的缠绕顺序。

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

dxDevice.SetRenderState( RenderState.CullMode, Cull.Clockwise );