在我的程序中,网格正确显示,但是当我将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);
答案 0 :(得分:1)
好吧,我希望这两个矩阵都能在你将近平面设置为0的基础上失败。它确实应该像0.0001f这样的小ε。
要记住的另一件事是,通过交换系统的手性,你很可能会反转tris的缠绕顺序。
您需要将剔除渲染状态设置为顺时针而不是反/逆时针。
即
dxDevice.SetRenderState( RenderState.CullMode, Cull.Clockwise );