Erstmal: D3D9-Interfaces lassen sich nur untereinander kombinieren und anfordern. Für alle 10er musst du eben ein 10er erstellen, für alle 11er eben ein 11er. Eine zusätzliches "Tesselation-Interface" bekommste nicht für lau.
Wenn du Tesselation in die Engine einbauen willst, musst du auch die Engine auf D3D11 umsatteln und eine D3D11 fähige Grafikkarte in deinen Computer einbauen. Derzeit gibt es von ATI welche. Auf die Fermis von NVIDIA mustte allerdings noch warten.
Ich habe mit D3D9 angefangen eine Engine zu schreiben. Ich hab sie untergliedert. "Core" und "Math" waren fertig. Ich hatte gerade mit "Video" angefangen. Da war das Device (mit Fenster) fertig, dazu noch Vertex und Index Buffer und ein Texturmanager.
Damit bin ich heut fertig geworden, das auf D3D11 umzusatteln.
Es war ein hartes Stück Arbeit!
Was ist in D3D11 neu?
- Der Unterschied von D3D10 zu D3D11 ist gering.
- D3D11 unterstützt Feature-Levels, die es erlauben, D3D11 auch auf D3D9-fähiger Hardware zu starten. Allerdings gibts D3D11 erst ab Vista bzw. 7. Und da wird eher D3D10 Hardware drin stecken. Jedenfalls gehts.
- Das ResourceManagement ist fundamental anders geworde. Dank der Virtualisierung gibt es jetzt kein Lost Device im Sinne von Alle Resourcen kaputt mehr. Weiterhin wird jetzt fast alles über Descs erzeugt und benutzt. Weiterhin hat man nicht nur die Resource an sich (Wird jetzt nur noch als Haufen Daten betrachtet), sondern man hat für jede Verwendungsmöglichkeit bei Texturen eine/ein (kann mich einer auflären?) View, die beschreibt, wo wie warum wozu die Daten liegen.
- Du hast keine Fixed Function Pipeline mehr -> DU musst alles mittels Shadern implementieren. Dazu hat MS jetzt die Pipeline anders gegliedert.
- Es gibt kein Direct3Dn-Interface mehr. Nur noch das Device (und seit 11 auch verschiedene Device Context fürs Rendern). Wenn du den Settings-Dialog auf D3D11 packen willst, wünsch ich dir jetzt schonmal viel Spaß!
Es ist eine ziemlich große Umstellung. Ich musste teilweise von ganz vorn anfangen und mich langsam rantasten. Vor allem bestand die meiste Zeit aus Doku lesen und setzen lassen.
Tipp am Rande: Lies den D3D10 Programming Guide.
Lohnt sich der Umstieg? Für mich war es bis jetzt fast nur Frustration und verschwindend geringe Erfolge.
Da die TriBase einmal mit D3D9 anständig läuft, würde ich mir genau überlegen, da D3D11 drunter zu packen. Ich würds nicht tun.