66 votes

Quel est le meilleur moyen de déboguer OpenGL?

Je trouve que très souvent, OpenGL vous montrera qu'il a échoué en ne tirant rien. J'essaie de trouver des moyens de déboguer des programmes OpenGL, en inspectant la pile de matrice de transformation, etc. Quel est le meilleur moyen de déboguer OpenGL? Si le code ressemble et se sent comme si les sommets sont au bon endroit, comment pouvez-vous être sûr qu'ils sont?

31voto

Ketan Points 711

Il n'y a pas de réponse directe. Tout dépend de ce que vous essayez de comprendre. Depuis OpenGL est l'état de la machine, parfois, il ne fait pas ce que vous attendez comme l'exige l'état n'est pas défini ou des choses comme ça.

En général, utiliser des outils comme glTrace / glIntercept (à regarder OpenGL trace d'appel), gDebugger (pour visualiser les textures, shaders, OGL état, etc.) et le papier/crayon :). Parfois, il aide à comprendre comment vous avez d'installation de la caméra et où il est à la recherche, ce qui est clipsé etc. Personnellement, j'ai compté pour durer plus de deux précédentes approches. Mais quand je peut dire que la profondeur est mauvaise, il contribue à veiller à l'état de trace. gDebugger est aussi le seul outil qui peut être utilisé efficacement pour le profilage et l'optimisation de votre application OpenGL.

En plus de cet outil, la plupart du temps, c'est les maths que les gens se trompent et qu'il ne peut pas être compris en utilisant n'importe quel outil. Post sur OpenGL.org forum pour code spécifique commentaires, vous ne serez jamais déçu.

Espérons que cela répond à votre question!

11voto

David Segonds Points 25602

GLIntercept est votre meilleur pari. À partir de leur page web:

  • Enregistrer tous les appels de fonction au format texte ou XML avec l'option journal des images individuelles.
  • La caméra libre. Voler autour de la géométrie envoyé à la carte graphique et d'activer/de désactiver filaire/backface-abattage/view frustum de rendu
  • Enregistrer et suivre l'affichage de listes. Économie de l'OpenGL tampon de trame (couleur/profondeur/pochoir) pré-et post-rendu des appels. La possibilité d'enregistrer le "diff" de pré-et post-images est également disponible.

10voto

Foxor Points 45

Apitrace est un outil relativement nouveau développé par certaines personnes chez Valve, mais il fonctionne très bien! Essayez-le: https://github.com/apitrace/apitrace

7voto

ccheng Points 1242

J'ai trouvé que vous pouvez vérifier en utilisant glGetError après chaque ligne de code, votre suspect sera faux, mais après l'avoir fait, le code n'a pas l'air très propre mais cela fonctionne.

4voto

Sijmen Mulder Points 1935

Pour les utilisateurs de Mac, le débogueur OpenGL est également excellent. Il vous permet d'inspecter les tampons, les états et facilite la recherche de problèmes de performances.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X