2010-06-21 62 views
1

在我的程序中,网格显示正常,但是当我将device.transform.view和device.transform.projection矩阵从左手改为右手系统,网格不能正确显示,即背面被照亮,正面是透明的! 有没有人有一个想法是什么改变更需要有一个适当的显示切换视图和投影矩阵后,DirectX网格显示不正确

原始矩阵:

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); 
+0

那么,如果您点击我的帖子的左边打钩,然后你接受我的职务。如果你认为它是有用的upvote(假设你还没有这样做)会很好:D – Goz 2010-06-23 09:24:44

回答

1

嗯,我期望这两个矩阵的对基于你将近平面设置为0而失败了。它确实应该是0.0001f这样的小epsilon。

另一件需要记住的是,通过交换系统的手型,你很可能会颠倒三叉戟的顺序。

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

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

非常感谢,解决了这个问题... – user326075 2010-06-23 09:07:43