Ich habe eine angemessene Anzahl kleiner Hobbyprojekte mit DirectX 9 durchgeführt, aber es ist jetzt Zeit, auf DirectX 11 umzusteigen.
Ich habe Frank Luna'a Buch über 3D-Programmierung mit DirectX 10, aber nichts über DirectX 11. Ich glaube, sie sind ziemlich ähnlich, habe mich aber gefragt, ob jemand die Hauptunterschiede auf Codeebene aufzählen könnte, die ich beachten muss ( oder auf eine vorhandene Quelle verweisen).
Antworten:
Die SDK-Dokumentation enthält einen Abschnitt zur Migration auf 11 , der sowohl von 9 als auch von 10 behandelt wird. Außerdem gibt es die Seite mit den D3D11-Funktionen .
Eine der größten Änderungen in Bezug auf die API-Form zwischen 10 und 11 besteht darin, dass 11 eine Reihe von Methoden vom Gerät selbst auf eine neue Schnittstelle verschiebt, die (
ID3D11DeviceContext
speziell) als Gerätekontext bezeichnet wird , um die neuen Multithreading-Funktionen zu unterstützen.Sobald Sie sich der Änderung bewusst sind, ist es jedoch recht einfach, sich darauf einzustellen: Wo Sie in 10 "
someDevice->Draw()
" genannt hätten, erhalten Sie stattdessen den unmittelbaren Kontext für das Gerät und rufen "immediateContext->Draw()
."Die andere große Änderung besteht darin, dass die Effekt-API aus dem Kern herausgezogen und eine unabhängige Quelldistribution erstellt wird, die Sie selbst kompilieren und verknüpfen müssen. Möglicherweise stellen Sie auch fest, dass einige D3DX-Schnittstellen und -Funktionen veraltet oder entfernt wurden.
Darüber hinaus gibt es eine Handvoll neuer Parameter für einige Funktionen und eine Handvoll zusätzlicher Felder in Strukturen usw. Beispielsweise verfügt das Pufferbeschreibungsobjekt in 11 über ein zusätzliches
StructureByteStride
Feld, das nicht in 10 enthalten ist , und die Geräteerstellung umfasst das Übergeben werden Informationen auf Funktionsebene übergeben. Außerdem gibt es die offensichtlichen und oben genannten Änderungen bei den Schnittstellennamen (10s durch 11s ersetzt).quelle
Ich denke, der Hauptunterschied ist, dass in DX11 der DXFont weg ist, ansonsten ist es so ziemlich wie notabene gesagt hat. Sie sollten mit diesem DX10-Buch gut zurechtkommen. Ich habe diesen verwendet, als ich zu DX11 gewechselt bin, und ich hatte keine Probleme. Sie müssen sich von Zeit zu Zeit die msdn ansehen, es gibt jedoch einige geringfügige Unterschiede in der API und an einigen Stellen des IIRC.
quelle
Es besteht keine Notwendigkeit, Änderungen vorzunehmen. Directx11 fügt nur neue Funktionen hinzu. Sie ändern nur die Nummern von ID3D10 in ID3D11 usw.
DirectX11 fügt hinzu (wenn nicht über gehypte HW-Tessalisierung gesprochen wird). Direct Compute: API für die GPGPU mit hervorragender Verbindung zur Grafik-Pipe-Linie (ich kann dies nicht über CUDA oder openCL sagen). Und die Möglichkeit mehrerer RW-Texturen und -Puffer auf einem Pixel-Shader, was viele neue Möglichkeiten eröffnet.
quelle