Wenn du mich Zwecks Grundgerüst fragst: Je aktueller und höher der Verbreitungsgrad, desto besser. DirectX 11 ist die gute Wahl.
Dann kann ich dir folgenden Tipp geben: Beschäftige dich erst einmal, wie DirectX 10/11 funktioniert.
Diese Webseite gibt einen guten Einblick, was es alles grundsätzlich gibt und erklärt auch (ziemlich) viel. Wie ich gerade sehe, bietet er auch schon Tutorials für DirectX 11 an. Also weißt du dann sogar direkt, was dich wie erwarten würde.
Sinn: Überblick über das generelle System verschaffen. Tipp: Mach es besser -> Objektorientiert.
Dann solltest du dir verschiedene Frameworks ansehen, die das gleiche System verwenden. Eine Suche in Codeplex, SourceForge usw. nach "Direct3D 11" kann sehr viel bewirken. Du wirst schnell feststellen, was dir am Design oder am Code-Design der verschiedenen Frameworks gefällt bzw. eher nicht gefällt.
Wenn du die Komponenten verstanden hast und wie diese gemeinsam kommunizieren, kannst du ein 3D Framework gestalten und wirst in Designfragen von Zeit zu Zeit schlauer.
Wenn du wüsstest wie meine erste Engine ausgesehen hat... und das geht jedem so.
@drakon:
Ja, hast recht. Aber was ich meine ist der Code bei der Anwendung der Klasse. Und ein try-catch-Block um einen Konstruktor zu basteln empfinde ich nicht gerade als lesefreundlich und eindeutig identifizierbar. Verschiedene Konstruktoren verwende ich da lieber für Strukturen, wenn ich diese gleich mit der Initialisierung festlegen möchte. Aber da gibt es keine Exceptions. Hier geht es gerade in Richtung Designfragen eines Frameworks - und da gibts ja viele Wege.