(Definieren Sie ein Makro, um das Debuggen von OpenGL-Befehlen zu erleichtern)?

Manchmal dauert es sehr lange, bedingte Ausdrucke und Überprüfungen einzufügenglGetError() Eingrenzen mit einer Form der binären Suche, bei der der erste Funktionsaufruf darin besteht, dass ein Fehler zuerst von OpenGL gemeldet wird.

Ich denke, es wäre cool, wenn es eine Möglichkeit gibt, ein Makro zu erstellen, mit dem ich alle GL-Aufrufe umgehen kann, die fehlschlagen und die unter bestimmten Bedingungen aufgerufen werdenglGetError gleich nach. Beim Kompilieren für ein spezielles Ziel kann ich es überprüfen lassenglGetError Mit einer sehr hohen Granularität würde dies beim Kompilieren für typische Releases oder Debugs nicht aktiviert (ich würde es nur einmal pro Frame überprüfen).

Ist das sinnvoll zu tun? Wenn ich ein bisschen danach suche, finde ich ein paar Leute, die einen Anruf empfehlenglGetError nach jedem non-draw gl-call, der im grunde das selbe ist, was ich beschreibe.

Gibt es in diesem Fall etwas Kluges, das ich tun kann (Kontext: Ich verwende GLEW), um den Prozess der Instrumentierung meiner Gl-Aufrufe auf diese Weise zu vereinfachen? Es wäre an dieser Stelle ein erheblicher Arbeitsaufwand, meinen Code so zu konvertieren, dass er jeden OpenGL-Funktionsaufruf mit einem Makro umschließt. Was großartig wäre, wäre, wenn ich etwas Kluges tun und all dies in Gang bringen könnte, ohne manuell zu bestimmen, welche Codeabschnitte zu instrumentieren sind (obwohl das auch potenzielle Vorteile hat ... aber nicht wirklich. IchJa wirklich kümmere mich nicht um die Leistung, wenn ich die Fehlerquelle debugge).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage