2008-10-30 5 views
1

J'essaie de rendre un modèle dans Direct3D en utilisant DrawIndexedPrimitives. Cependant, je ne suis pas capable de le voir à l'écran. Quelles sont les méthodes habituelles utilisées pour déboguer un modèle Direct3D?Débogage d'un modèle Direct3D

J'ai essayé ce qui suit:

  • Hors tension face arrière culling
  • Utilisé PrimitiveType.LineStrip au lieu de PrimitiveType.TriangleStrip
  • Plusieurs combinaisons de vue et des matrices de projection.
  • Utilisé AutoCAD pour tracer les sommets que de minuscules sphères

Répondre

2
  • Rendre la couleur d'arrière-plan grise; alors si c'est blanc ou noir, vous le verrez.
  • Vérifiez vos matrices de transformation (monde/vue/projection). Utilisez une fonction mathématique standard pour la projection &, définissez le monde à l'identité.
  • Assurez-vous de configurer votre fenêtre d'affichage; facile d'oublier celui-ci et d'avoir 0 valeurs dans la fenêtre.
  • Activez le débogage D3D. Regardez le débogage spew; Beaucoup de gens manquent que l'exécution vous dira ce qui ne va pas.
  • Vérifiez votre pixel/vertex shader. Utilisez une configuration connue qui fonctionne; ou une fonction fixe.
  • Vérifiez l'état du rendu. Tour de Z mise en mémoire tampon, Z test, Z écriture, etc au cas où vous avez des problèmes de configuration de profondeur. Vérifiez que vos masques d'écriture couleur sont activés. Il y a beaucoup d'États, cherchez ceux que vous avez modifiés et qui pourraient causer des problèmes.
  • Vérifiez votre appel à DrawIP - vous pourriez avoir des problèmes de paramètres tels que spécifier le mauvais nombre de sommets, visages, etc. Essayez de dessiner le premier triangle de la liste, et pas d'autres; Faites-en un avant de les dessiner tous ...
2

Utilisez l'outil PIX de DX SDK. C'est absolument génial. Il est probable que vous souhaitiez utiliser le mode de capture d'image unique. Ensuite, sur l'appel draw, PIX affichera le modèle avant que le traitement de vertex ait lieu, après le traitement de vertex, l'état complet de votre périphérique, les pixels restants rendus, etc.

1

Par défaut, il n'y a pas de lumière dans D3D, Peut-être tout est noir. Essayez d'allumer la lumière si vous ne l'avez pas fait.