Ich schreibe eine Spiele-Engine und wenn ich eine perspektivische Kamera benutze, bekomme ich einen schwarzen Bildschirm. Ich werde nicht genau fragen, warum das so ist, weil es eine Menge Code zu teilen gibt, und ehrlich gesagt denke ich, dass das eine etwas bescheidene Frage ist, auch wenn es Sie alle stört.
Das Problem ist, dass ich nicht weiß, wie ich es debuggen soll. Alles, was sich ändert, ist meine Projektionsmatrix, und wenn meine Projektionsmatrix gut aussieht, weiß ich nicht, warum es nicht funktioniert. Idealerweise würde ich die Werte verschiedener Dinge ausdrucken, während der Shader seine Berechnungen durchführte, aber GLSL hat unbequemerweise keine printf () -Funktion.
Meine Frage lautet also: Wie kann ich mein Problem beheben? Das einzige, was ich mir vorstellen kann, ist, so viele Werte wie möglich clientseitig zu überprüfen und dann durch Permutation zu programmieren, aber das habe ich getan und bin nirgendwo hingekommen. Kann ich auf irgendeine Weise sehen, was auf der Grafikkarte passiert? Gibt es eine völlig andere Technik, die ich verwenden könnte?
Ich verwende GLSL-Version 420 (und Funktionen, die für diese Version spezifisch sind), sodass ich nicht denke, dass glslDevil eine Option ist, da es zuletzt im Jahr 2010 aktualisiert wurde.
BEARBEITEN
Ich konnte mein Problem durch ein völlig unabhängiges Debugging lösen.
Obwohl ich nicht sicher bin, ob NVIDIA Nsight in der Lage sein sollte, Shader zu debuggen, denke ich zumindest, dass es GLSL in einer früheren Version (die Sie finden sollten) unterstützt. Die Integration mit Visual Studio ist ganz in Ordnung, ist nicht einfach, bietet aber eine Menge nützlicher Dinge, aber in den älteren Versionen brauchten Sie zwei Computer mit jeweils einer GPU, um Shader über ein Netzwerk zu debuggen (während die neueste Version "lokales" Debuggen zulässt). . Überprüfen Sie auch den Shader Designer [2], der eine nützliche IDE zu sein scheint (aber kein GLSL-Debugging bietet).
[1] http://developer.nvidia.com/content/nvidia-nsight-visual-studio-edition
[2] http://www.opengl.org/sdk/tools/ShaderDesigner/
quelle
Leider ist das Debuggen von OpenGL nicht einfach. Hier sind Dinge, die ich nützlich fand:
quelle
Persönlich benutze ich immer noch RenderMonkey. Für genau diese Frage ist es jedoch nicht ganz geeignet, da es sich nur um eine Fassade einer echten App handelt und daher einige merkwürdige Einschränkungen aufweist. Es gibt keinen Support mehr, aber ich habe nichts Besseres zum Debuggen von GLSL gefunden.
quelle