Migrieren zu Direct3D 11
Dieser Abschnitt enthält Informationen zum Migrieren von einer früheren Version von Direct3D zu Direct3D 11.
- Direct3D 9 zu Direct3D 11
- Direct3D 10 zu Direct3D 11
- Direct3D 10.1 zu Direct3D 11
- Neue Features für Direct3D 11
- Neue Features für DirectX 11.1
- Neue Features für DirectX 11.2
- Verwandte Themen
Direct3D 9 zu Direct3D 11
Die Direct3D 11-API baut auf den Infrastrukturverbesserungen in Direct3D 10 und 10.1 auf. Das Portieren von Direct3D 9 auf Direct3D 11 ähnelt dem Wechsel von Direct3D 9 zu Direct3D 10. Im Folgenden finden Sie die wichtigsten Herausforderungen bei diesem Versuch.
- Entfernung aller Festen Funktionspipelines zugunsten von programmierbaren Shadern, die ausschließlich in HLSL erstellt wurden (kompiliert über D3DCompiler anstelle von D3DX9).
- Die Zustandsverwaltung basiert auf unveränderlichen Objekten und nicht auf einzelnen Zustandsschaltern.
- Aktualisierung, um die strengen Verknüpfungsanforderungen von Vertexpuffereingabelayouts und Shadersignaturen zu erfüllen.
- Zuordnen von Shaderressourcenansichten zu allen Texturressourcen.
- Zuordnen aller Bildinhalte zu einem DXGI-FORMAT, einschließlich entfernen aller _ 16-Bit-Farbformate (5/5/5/1, 5/6/5, 4/4/4/4), Entfernen aller 24-Bit-Farbformate (8/8/8) und strikte RGB-Farb reihenfolge.
- Aufbrechen der globalen konstanten Zustandsverwendung in mehrere kleine, effizienter aktualisierte konstanten Puffer.
Weitere Informationen zum Wechsel von Direct3D 9 zu Direct3D 10 finden Sie unter Überlegungen zu Direct3D 9 zu Direct3D 10.
Direct3D 10 zu Direct3D 11
Das Konvertieren von Programmen, die für die Verwendung der Direct3D 10- oder 10.1-API geschrieben wurden, ist ein direkter Prozess, da Direct3D 11 eine Erweiterung der vorhandenen API ist. Mit nur einer geringfügigen Ausnahme (siehe unten : monotone Textfilterung), sind alle Methoden und Funktionen in Direct3D 10/10.1 in Direct3D 11 verfügbar. In der folgenden Gliederung werden die Unterschiede zwischen den beiden APIs beschrieben, um die Aktualisierung von vorhandenem Code zu helfen. Die wichtigsten Unterschiede sind hier:
- Renderingvorgänge (Zeichnen, Zustand usw.) sind nicht mehr Teil der Geräteschnittstelle, sondern Teil der neuen DeviceContext-Schnittstelle zusammen mit Ressourcenzuordnungs-/Zuordnungs- und Geräteabfragemethoden.
- Direct3D 11 enthält alle Verbesserungen und Änderungen, die zwischen Direct3D 10.0 und 10.1 vorgenommen wurden.
Enumerationen und Definitionen
| Direct3D 10 | Direct3D 11 |
|---|---|
| _DXGI-FORMAT | DXGI _ FORMATMehrere neue DXGI-Formate wurden definiert. |
| D3D10 _ – _ GERÄTEWECHSEL ZU REF _ _ _ ERSTELLEN | D3D11 _ CREATE _ DEVICE SWITCH TO _ _ _ REFDie Switch-to-Ref-Funktionalität wird von Direct3D 11 nicht unterstützt. |
| _D3D10-TREIBERTYP _ | D3D _ _TREIBERTYPBeachten Sie, dass die Enumerationsbezeichner in D3D _ DRIVER _ TYPE von den Bezeichnern in D3D10 _ DRIVER TYPE neu definiert _ wurden. Daher sollten Sie sicherstellen, dass Sie die Enumerationsbezeichner anstelle von Literalzahlen verwenden. D3D _ DRIVER _ TYPE ist in D3Dcommon.h definiert. |
| D3D10 _ RESOURCE _ MISC _ FLAG | D3D11 _ RESOURCE _ MISC _ FLAGBeachten Sie, dass viele dieser Flags neu definiert wurden. Achten Sie daher darauf, Enumerationsbezeichner anstelle von Literalzahlen zu verwenden. |
| D3D10 _ FILTER | D3D11 _ FILTERBeachten Sie, dass die Textfilterung D3D10 _ FILTER TEXT _ _ 1BIT aus Direct3D 11 entfernt wurde. Siehe DirectWrite. |
| D3D10 _ COUNTER | D3D11 _ COUNTERBeachten Sie, dass die anbieterneutralen Leistungsindikatoren für Direct3D 11 entfernt wurden, da sie nur selten unterstützt wurden. |
| D3D10 _ x | D3D11 x Viele Enumerationen und Definitionen sind identisch, haben größere Grenzwerte _ oder zusätzliche Werte. |
Strukturen
| Direct3D 10 | Direct3D 11 |
|---|---|
| D3D10– _ _ DEKLARATIONSEINTRAG _ | D3D11 _ SO _ DECLARATION _ ENTRY FügtStream hinzu. |
| D3D10 _ BLEND _ DESC | D3D11 _ BLEND _ DESC BeachtenSie, dass sich diese Struktur erheblich von 10 in 10,1 geändert hat, um den Blendzustand pro Renderziel zu ermöglichen. |
| D3D10 _ BUFFER _ DESC | D3D11 _ BUFFER _ DESC Fügtein StructureByteStride für die Verwendung mit Compute-Shaderressourcen hinzu. |
| D3D10 _ SHADER _ RESOURCE _ VIEW _ DESC | D3D11 _ SHADER _ RESOURCE _ VIEW _ DESC BeachtenSie, dass für diese Struktur zusätzliche Union-Member für 10.1 hinzugefügt wurden. |
| D3D10 _ _ TIEFEN-SCHABLONENANSICHT _ _ DESC | D3D11 _ DEPTH _ STENCIL _ VIEW _ DESCVerfügt über ein neues Flags-Member. |
| D3D10 _ QUERY _ DATA _ PIPELINE _ STATISTICS | D3D11 _ QUERY _ DATA _ PIPELINE _ STATISTICSFügt mehrere neue Shaderstufenindikatoren hinzu. |
| D3D10 _ x | D3D11 _ x Viele Strukturen sind zwischen den beiden APIs identisch. |
Schnittstellen
| Direct3D 10 | Direct3D 11 |
|---|---|
| ID3D10Device | ID3D11Device und ID3D11DeviceContext Die Geräteschnittstelle wurde in diese beiden Teile aufgeteilt. Für schnelles Portieren können Sie ID3D11Device::GetImmediateContext verwenden. Die Methoden "ID3D10Device::GetTextFilterSize" und "SetTextFilerSize" sind nicht mehr vorhanden. Siehe DirectWrite. Zum * Erstellen eines Shaders wird ein zusätzlicher optionaler Parameter für ID3D11ClassLinkage verwendet. *SetShader und * GetShader verwenden zusätzliche optionale Parameter für ID3D11ClassInstance(s). CreateGeometryShaderWithStreamOutput verwendet ein Array und eine Anzahl für mehrere Ausgabestreamschritte. Der Grenzwert für den NumEntries-Parameter von CreateGeometryShaderWithStreamOutput wurde auf D3D11 _ SO STREAM COUNT _ _ * D3D11 _ SO OUTPUT COMPONENT COUNT in _ _ _ Direct3D 11 erhöht. |
| ID3D10Buffer | ID3D11Buffer |
| ID3D10SwitchToRef | ID3D11SwitchToRef Switch-to-Ref-Funktionen werden in Direct3D 11 nicht unterstützt. |
| ID3D10Texture1D | ID3D11Texture1D |
| ID3D10Texture2D | ID3D11Texture2D |
| ID3D10Texture3D | ID3D11Texture3D Die Map- und Unmap-Methoden wurden in ID3D11DeviceContextverschoben, und alle Map-Methoden verwenden D3D11 _ MAPPED _ SUBRESOURCE anstelle eines * * void-Objekts. |
| ID3D10Asynchronous | ID3D11Asynchronous Begin, End und GetData wurden in ID3D11DeviceContext verschoben. |
| ID3D10x | ID3D11x Viele Schnittstellen sind zwischen den beiden APIs identisch. |
Andere verwandte Technologien
| 10/10.1-Lösung | 11 Lösung |
|---|---|
| HLSL-Konformer (D3D10Compile,D3DX10Compile) und Shaderreflektions-APIs | D3DCompiler (siehe D3DCompiler.h)[!Note] |
| Effekte 10 | Effekte 11 ist als freigegebene Quelle online verfügbar.[!Note] |
| D3DX9/D3DX10 Math | DirectXMath |
| D3DX10 | D3DX11 im älteren DirectX SDK DirectXTex, DirectXTKund DirectXMesh bieten Alternativen zu vielen Technologien in den Legacybibliotheken D3DX10 und D3DX11. Direct2D und DirectWrite bieten qualitativ hochwertige Unterstützung für das Rendern von formatierten Linien und Schriftarten. |
Informationen zum älteren DirectX SDK finden Sie unter Wo befindet sich das DirectX SDK?.
Direct3D 10.1 zu Direct3D 11
Direct3D 10.1 ist eine Erweiterung der Direct3D 10-Schnittstelle, und alle Features von Direct3D 10.1 sind in Direct3D 11 verfügbar. Der Großteil der Portierung von 10.1 zu 11 wurde bereits oben von 10 zu 11 adressiert.
Enumerationen und Definitionen
| Direct3D 10.1 | Direct3D 11 |
|---|---|
| D3D10 _ FEATURE _ LEVEL1 | D3D _ FEATURE _ LEVELIdentisch, aber in D3DCommon.h definiert sowie das Hinzufügen von D3D _ FEATURE LEVEL _ _ 11 _ 0 für 11-Klassenhardware zusammen mit D3D _ FEATURE LEVEL _ _ 9 _ 1, D3D _ FEATURE LEVEL _ _ 9 _ 2 und D3D _ FEATURE LEVEL _ _ 9 _ 3 für 10level9 (D3D10 _ FEATURE _ LEVEL _ 9 _ 1, D3D10 _ FEATURE LEVEL _ _ 9 _ 2 und D3D10 _ FEATURE LEVEL _ _ 9 _ 3 wurden ebenfalls für 10.1 zu d3d10 _ 1.h hinzugefügt. |
Strukturen
| Direct3D 10.1 | Direct3D 11 |
|---|---|
| D3D10 _ BLEND _ DESC1 | D3D11 _ BLEND _ DESCDie Version 11 ist identisch mit 10.1. |
| D3D10 _ _ SHADER-RESSOURCENANSICHT _ _ DESC1 | D3D11 _ SHADER _ RESOURCE _ VIEW _ DESCDie Version 11 ist mit 10.1 identisch. |
Schnittstellen
| Direct3D 10.1 | Direct3D 11 |
|---|---|
| ID3D10Device1 | ID3D11Device und ID3D11DeviceContext Die Geräteschnittstelle wurde in diese beiden Teile aufgeteilt. Zum schnellen Portieren können Sie ID3D11Device::GetImmediateContextverwenden. Die Methoden "ID3D10Device::GetTextFilterSize" und "SetTextFileerSize" sind nicht mehr vorhanden. Weitere Informationen finden Sie unter DirectWrite. Shader erstellen * verwendet einen zusätzlichen optionalen Parameter für ID3D11ClassLinkage. *SetShader und * GetShader verwenden zusätzliche optionale Parameter für ID3D11ClassInstance(s). CreateGeometryShaderWithStreamOutput verwendet ein Array und die Anzahl für mehrere Ausgabestreamschritte. Der Grenzwert für den NumEntries-Parameter von CreateGeometryShaderWithStreamOutput wurde auf D3D11 _ SO STREAM COUNT _ _ * D3D11 _ SO OUTPUT COMPONENT COUNT in _ _ _ Direct3D 11 erhöht. |
| ID3D10BlendState1 | ID3D11BlendState |
| ID3D10ShaderResourceView1 | ID3D11ShaderResourceView |
Neue Features für Direct3D 11
Sobald Ihr Code für die Verwendung der Direct3D 11-API aktualisiert wurde, sind zahlreiche neue Features zu berücksichtigen.
- Multithreadrendering über Befehlslisten und mehrere Kontexte
- Implementieren erweiterter Algorithmen mithilfe des Compute-Shaders (mithilfe von Shaderprofilen 4.0, 4.1 oder 5.0)
- Neue Hardwarefeatures der 11-Klasse:
- HLSL-Shadermodell 5.0
- Dynamische Shaderbindung
- Mosaik durch Hüllen- und Domänen-Shader
- Neue Blockkomprimierungsformate: BC6H für HDR-Images, BC7 für Standardimages mit höherer Genauigkeit
- Verwendung der 10level9-Technologie für das Rendern auf vielen Shader-Geräten vom Typ "Model 2.0" und "Shader Model 3.0" über die DIrect3D 11-API zur Unterstützung von Lower-End-Videohardware auf Windows Vista und Windows 7.
- Nutzen des WARP-Softwarerenderinggeräts.
Neue Features für DirectX 11.1
Windows 8 enthält weitere DirectX-Grafikverbesserungen, die sie berücksichtigen sollten, wenn Sie Ihren DirectX-Grafikcode implementieren, z.B. Direct3D 11.1, DXGI 1.2, Windows Display Driver Model (WDDM) 1.2,Hardware auf Featureebene 11.1, Direct2D-Gerätekontexte und andere Verbesserungen.
Teilunterstützung für Direct3D 11.1 ist auch auf Windows 7 verfügbar, und zwar über das Plattformupdate für Windows 7,das über das Plattformupdate für Windows 7verfügbar ist.
Neue Features für DirectX 11.2
Die Windows 8.1 umfasst Direct3D 11.2, DXGI 1.3und andere Verbesserungen.