Erstmal Danke, dass du dir den Code angeschaut hast
. Zu deinen Punkten:
o Du verwendest gern "Fette" Konstruktoren (Device, Window, ...). Eigentlich, auch wenn da sicherlich viele Einspruch
erheben, sollte der Konstruktor möglichst schlank bleiben und keine "schwere" Logik ausführen. Der Konstruktor sollte das Objekt in einen korrekt initialisierten Zustand bringen, sonst nichts.
Zugegebenermaßen die Konstruktoren sind Teils schon ziemlich groß, dabei macht auch das Device mehr als ein Device eigentlich tun sollte. Ich will aber auch verhindern, dass das ganze in Richtung Framework/Engine abdriftet - nen Spiel soll dabei raus kommen und nichts anderes. Deswegen hab ich einfach alles in eine Klasse reingeklatscht, aber hast schon recht ich werd mir mal Gedanken machen wie ich das aufteilen kann.
Wegen dem Konstruktor von Window: der ist ja eigentlich ziemlich schlank, tut nichts außer das Window Objekt zu erstellen.
Beim auftennen von Device und SwapChain wäre auch das Problem, dass ich zum erstellen ja die selbe Factory brauche und dann aus dem Device die Factory wiederherstellen müsste was ich ursprünglich verworfen habe weil der Code dazu extrem eklig war :/.
o Bei Konstruktoren mit einem Parameter immer "explicit" verwenden, falls kein implizites Casten erlaubt sein soll
(Window, VertexShaderBinary, ...)
Ok
.
o Null Kommentare vorhanden
Das stimmt leider, so fleißig bin ich da noch nicht.. finde es aber auch etwas kompliziert zu entscheiden was jetzt intuitiv klar ist und was nicht.
o Deine Interfaces wirken eher pragmatisch und nicht logisch (VertexShaderBinary::CreateShader, VertexShaderBinary::CreateInputLayout)
Okey das verstehe ich nicht, kannst du mal genauer darauf eingehen?
o Kleine, unnötige Methoden (InitializeDeviceContext)
Ja das hängt mit den fetten Konstruktoren zusammen, würde dann auch mit raus fliegen.
o union-Vektor
Das versteh ich auch nicht was ist denn schlecht daran? Ich hab hauptsächlich den Vorteilg esehen, dass ich die meisten Funktoinen und Operatoren in einem File für alle Vektoren deklarieren kann.