2010-06-21 17 views
1

Dans mon programme, les maillages s'affichaient correctement, mais lorsque je modifiais les matrices device.transform.view et device.transform.projection de la gauche vers la système droitier, les mailles ne sont plus affichées correctement, c'est-à-dire que les faces arrières sont éclairées et les faces avant transparentes! Quelqu'un at-il une idée de ce que davantage doit être changé pour un affichage correctLes maillages DirectX ne s'affichent pas correctement après la commutation des matrices de vue et de projection

matrices originales:

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

modification:

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

Eh bien, si vous cliquez sur la coche sur le côté gauche de mon message, vous acceptez mon poste. Si vous pensiez que c'était utile un upvote (En supposant que vous ne l'avez pas déjà fait) serait bien aussi: D – Goz

Répondre

1

Eh bien, je vous attendriez ces deux matrices à échouer terriblement sur la base que vous définissez le plan proche à 0. Il devrait vraiment être un petit epsilon comme 0,0001f.

L'autre chose à garder à l'esprit est qu'en inversant la rectitude du système, vous inverserez probablement l'ordre d'enroulement du tris.

Vous devez définir l'état de rendu de sélection dans le sens des aiguilles d'une montre plutôt que dans le sens anti-horaire.

-à-dire

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

Merci beaucoup, cela résout le problème ... – user326075