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 のような小さなイプシロンである必要があります。

心に留めておくべきもう 1 つのことは、システムの利き手を交換することによって、ほとんどの場合、tris の巻き順が逆になるということです。

カリング レンダリング ステートを反時計回り/反時計回りではなく時計回りに設定する必要があります。

すなわち

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