Lernen von OpenGL beim Üben von TDD (Komponententest)

Ich habe ein neues Spielprojekt gestartet und mich dazu entschlossen, OpenGL dafür zu lernen und zu verwenden (Projekt wird gleichzeitig unter Windows und Linux entwickelt). Gleichzeitig interessiert mich auch die testgetriebene Entwicklung sehr und ich bemühe mich nach besten Kräften, meine Komponententests so zu schreiben, dass sie das Design vor dem eigentlichen Code leiten.

Ich denke jedoch, dass mein Mangel an Wissen mich auslöst und ich versuche immer wieder, meine Unit-Tests für die "Rendering" -Teile der Codebasis zu schreiben. Ich hoffe, jemand kann mir einen Einblick geben, wie ich weitermachen kann.

Ich weiß, dass ich meine Interaktionen mit OpenGL und nicht mit OpenGL selbst testen muss. Die einzige Möglichkeit, dies zu tun, besteht darin, OpenGL zu einem gewissen Grad vom Rest meines Codes abzulenken, indem OpenGL-Funktionsaufrufe abgefangen oder eine ganz neue Klassenschnittstelle erstellt werden, mit der ich eine Scheinversion dieser Klasse erstellen kann für die tests. (Noch besser wäre es, sie auf eine Reihe von Nicht-Klassenfunktionen in einem separaten Namespace zu abstrahieren, anstatt auf virtuelle Klassenabstraktionen, aber ich verstehe nicht, wie ich das verspotten könnte.)

Da ich aber noch OpenGL lerne, habe ich nur eine vorübergehende Vorstellung davon, wie diese Abstraktion aussehen sollte. Soll ich beispielsweise jeden OpenGL-Aufruf umbrechen oder sie auf der Grundlage der auszuführenden Aufgaben in übergeordnete Funktionen gruppieren? Dünne Wrapper würden kaum mehr tun, als eine bestimmte OpenGL-Funktion aufzurufen, sodass ich sie nicht vorher testen müsste, aber ich könnte am Ende eine große Anzahl von Funktionen zum Wrappen haben. Andererseits, wenn ich zu weit in die andere Richtung gehe und mehrere OpenGL-Aufrufe nach Aufgaben gruppiere, habe ich das Gefühl, dass ich dort landen werde, wo ich angefangen habe. Ich habe eine große Menge Code mit OpenGL, der vor der Verwendung selbst getestet werden muss.

Wo ist der Mittelweg? Wie lerne ich, OpenGL zu verwenden, während ich vorher die richtigen Unit-Tests durchführe?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage