Open GL debuggen

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Open GL debuggen

Beitrag von Jonathan »

Also folgendes ist mein Problem: Ich habe eine Modellkalsse zum laden und rendern von Modellen geschrieben und ein dazu passendes Spiel, welches Modelle auf einem Terrain darstellen soll. Mein Problem ist jetzt, dass der Boden nicht dargestellt wird, sobald ich ein Modell lade. Naja es wird irgendetwas mit irgendwelchen Statechanges zu tun haben, das beim Laden der Modelle irgendwas gesetzt wird, was für das rendern des Bodens nicht so toll ist.
Die Frage ist jetzt, wie findet ihr solche Fehler schnell und zuverlässig? Ich benutze z.B. glIntercept damit kann man unter anderem schön sehen, was während eines Frames so alles passiert. Aber um den Fehler beim Laden zu finden muss man fast schon einen kompletten Log erstellen und sich überlegen, was da jetzt schief gehen sollte. Desweiteren verwende ich glew, was bei jedem Start erstmal ein paar tausend abfragen für die Extensions macht, was irgendwie nervig ist, wenn man gerade debuggen will.
Ich suche jetzt nicht unbedingt Antworten auf mein jetziges Problem sondern eher Tips und Erfahrungen wie ihr Fehler sucht und findet.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
anonym
Beiträge: 79
Registriert: 15.07.2009, 07:35
Kontaktdaten:

Re: Open GL debuggen

Beitrag von anonym »

Leider läuft die Trial-Version nur eine Woche:
http://www.gremedy.com/products.php
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Open GL debuggen

Beitrag von Jonathan »

Hm, eine Woche reicht mal, um 1-2 Fehler zu suchen, aber nicht um das Projekt fertig zu stellen. Und die Preise sind auch jenseits von Gut und Böse, oder sagen wir, nicht auf Privatnutzer ausgerichtet. Ansonsten sieht das natürlich super aus, kommt aber wohl leider nicht in Frage :(
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
glassbear
Establishment
Beiträge: 324
Registriert: 08.04.2003, 18:09
Alter Benutzername: Enrico_
Echter Name: Enrico
Wohnort: San Diego
Kontaktdaten:

Re: Open GL debuggen

Beitrag von glassbear »

Für gDebugger gibt es auch billigere Versionen für Privatleute und Studenten. Als Student hatte ich eine, hat um die $150 für die jährlich Maintenance gekostet, weiter nix. Schick einfach ne Email hin ;)
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
anonym
Beiträge: 79
Registriert: 15.07.2009, 07:35
Kontaktdaten:

Re: Open GL debuggen

Beitrag von anonym »

Gibt was ähnliches für umsonst:
http://www.vis.uni-stuttgart.de/glsldevil/
Kommt aber so weit ich bisher gesehen habe nicht ganz an gDEBugger ran.
Stefan Zerbst
Moderator
Beiträge: 189
Registriert: 25.02.2009, 19:54

Re: Open GL debuggen

Beitrag von Stefan Zerbst »

Jonathan hat geschrieben:Die Frage ist jetzt, wie findet ihr solche Fehler schnell und zuverlässig?
Also glIntercept nützt bei solchen Dinge nicht wirklich viel. Letzten Endes, wie du ja schon selber erkannt hast, wird das Problem ein "falsch" gesetzter State sein. Dabei ist "falsch" allerdings relativ, weil das kein Fehler in der Anwendung von OpenGL ist und sich daher nicht unbedingt als irgendein GL_ERROR bemerkbar machen muss. Es ist eher ein Fehler in deinem Programmablauf und daher auch mit GL Debuggern schwer bis gar nicht zu finden.

Bei solchen Situationen ist es leider das einfachste z.B. den Modelloader am Schopfe zu packen und sukzessive alle OpenGL Anweisungen auszukommentieren. Ab irgendeinem Zeitpunkt wird das Terrain wieder auftauchen und du weißt, welcher State falsch ist.

Mit etwas mehr Detailwissen und / oder Erfahrung kann man dann auch erstmal gezielt diverse States beim Rendern des Terrains auf ihren Default setzen bzw. das was zum Rendern des Terrains eigentlich gesetzt sein sollte worauf man sich implizit verlässt. Bestenfalls wird es nur einen nicht-gepoppte GL Matrix sein :) schlimmstenfalls sind Blending-States so verdreht, dass nix bei rauskommt.

Ciao,
Stefan
Antworten