Migrace na Direct3D 11
Tato část obsahuje informace o migraci na Direct3D 11 ze starší verze Direct3D.
- Direct3D 9 na Direct3D 11
- Direct3D 10 až Direct3D 11
- Direct3D 10.1 do Direct3D 11
- nové funkce pro direct3D 11
- nové funkce pro DirectX 11.1
- nové funkce pro DirectX 11.2
- související témata
Direct3D 9 do Direct3D 11
Rozhraní API Direct3D 11 vychází z vylepšení infrastruktury v Direct3D 10 a 10.1. Přenos z Direct3D 9 na Direct3D 11 se podobá přechodu z Direct3D 9 na Direct3D 10. Toto jsou klíčové výzvy v tomto úsilí.
- Odebrání veškerého použití kanálu s pevnou funkcí ve prospěch programovatelných shaderů vytvořených výhradně v HLSL (kompilováno prostřednictvím D3DCompiler místo D3DX9).
- Správa stavu založená na neměnných objektech, nikoli na jednotlivých přepínačích stavu.
- Aktualizace pro splnění přísných požadavků na propojení rozložení vstupního vyrovnávacího bufferu a podpisy shaderu.
- Přidružení zobrazení prostředků shaderu ke všem prostředkům textury
- Mapování veškerého obsahu obrázku na DXGI_FORMAT, včetně odebrání všech 24bitových barevných formátů (8/8/8) a striktního řazení barev RGB pro většinu scénářů.
- Rozdělení globálního používání konstantního stavu do několika malých konstantních vyrovnávacích pamětí, které se efektivněji aktualizují.
Další informace o přechodu z Direct3D 9 na Direct3D 10 viz Podrobnosti o přechodu z Direct3D 9 na Direct3D 10.
Direct3D 10 do Direct3D 11
Převod programů napsaných pro použití rozhraní API Direct3D 10 nebo 10.1 je přímý proces, protože Direct3D 11 je rozšířením stávajícího rozhraní API. Pouze s jednou menší výjimkou (uvedeno níže – monochromatické filtrování textu) jsou všechny metody a funkce direct3D 10/10.1 dostupné v Direct3D 11. Následující osnova popisuje rozdíly mezi těmito dvěma rozhraními API, které vám pomůžou s aktualizací existujícího kódu. Mezi hlavní rozdíly zde patří:
- Operace vykreslování (Kreslení, stav atd.) už nejsou součástí rozhraní zařízení, ale jsou součástí nového rozhraní DeviceContext spolu s metodami dotazů na prostředky Map/Unmap a zařízení.
- Direct3D 11 zahrnuje všechna vylepšení a změny provedené mezi Direct3D 10.0 a 10.1
Výčty a definice
Direct3D 10 | Direct3D 11 |
---|---|
DXGI_FORMAT |
DXGI_FORMATbylo definováno několik nových formátů DXGI. |
D3D10_CREATE_DEVICE_SWITCH_TO_REF |
D3D11_CREATE_DEVICE_SWITCH_TO_REFFunkce "switch-to-ref" není podporována Direct3D 11. |
D3D10_DRIVER_TYPE |
D3D_DRIVER_TYPEVšimněte si, že identifikátory výčtu v D3D_DRIVER_TYPE byly předdefinovány z identifikátorů v D3D10_DRIVER_TYPE. Proto byste měli být jisti, že místo literálových čísel použijete identifikátory výčtu. D3D_DRIVER_TYPE je definován v souboru D3Dcommon.h. |
D3D10_RESOURCE_MISC_FLAG |
D3D11_RESOURCE_MISC_FLAGVšimněte si, že mnohé z těchto příznaků byly redefinovány, proto místo číselných literálů používejte identifikátory výčtu. |
D3D10_FILTER |
D3D11_FILTERVšimněte si, že filtrování textu D3D10_FILTER_TEXT_1BIT bylo odebráno z Direct3D 11. Viz DirectWrite. |
D3D10_COUNTER |
D3D11_COUNTERVšimněte si, že u Direct3D 11 byly odebrány čítače neutrálního dodavatele, protože byly zřídka podporovány. |
D3D10_x | D3D11_x mnoho výčtů a definice jsou stejné, mají větší limity nebo mají další hodnoty. |
Struktury
Direct3D 10 | Direct3D 11 |
---|---|
D3D10_SO_DECLARATION_ENTRY |
D3D11_SO_DECLARATION_ENTRYpřidává stream. |
D3D10_BLEND_DESC |
D3D11_BLEND_DESCVšimněte si, že tato struktura se výrazně změnila od verze 10 na 10.1, aby poskytovala stav míchání pro každý cíl renderování. |
D3D10_BUFFER_DESC |
D3D11_BUFFER_DESCpřidá StructureByteStride pro použití s prostředky výpočetního shaderu |
D3D10_SHADER_RESOURCE_VIEW_DESC |
D3D11_SHADER_RESOURCE_VIEW_DESCVšimněte si, že do této struktury byly přidány další členy unie pro verzi 10.1. |
D3D10_DEPTH_STENCIL_VIEW_DESC |
D3D11_DEPTH_STENCIL_VIEW_DESCmá nový člen nazvaný Flags. |
D3D10_QUERY_DATA_PIPELINE_STATISTICS |
D3D11_QUERY_DATA_PIPELINE_STATISTICSpřidá několik nových čítačů fáze shaderu. |
D3D10_x | D3D11_x mnoho struktur je mezi těmito dvěma rozhraními API stejné. |
Rozhraní
Direct3D 10 | Direct3D 11 |
---|---|
ID3D10Device |
ID3D11Device a ID3D11DeviceContext Rozhraní zařízení bylo rozděleno do těchto dvou částí. Pro rychlé přenosy můžete použít ID3D11Device::GetImmediateContext. Metody ID3D10Device::GetTextFilterSize a SetTextFilerSize již neexistují. Viz DirectWrite. Create*Shader přebírá další volitelný parametr pro ID3D11ClassLinkage. *SetShader a *GetShader přijímají další volitelné parametry pro ID3D11ClassInstance(s). CreateGeometryShaderWithStreamOutput přebírá pole a počet kroků ve více výstupních proudech. Limit parametru NumEntries CreateGeometryShaderWithStreamOutput se zvýšil na D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT v Direct3D 11. |
ID3D10Buffer | ID3D11Buffer |
ID3D10SwitchToRef |
ID3D11SwitchToRefFunkcionalita přepnutí na referenci není v Direct3D 11 podporovaná. |
ID3D10Texture1D | ID3D11Texture1D |
ID3D10Texture2D | ID3D11Texture2D |
ID3D10Texture3D |
ID3D11Texture3Dmetody Map a Unmap byly přesunuty do ID3D11DeviceContexta všechny metody Map používají D3D11_MAPPED_SUBRESOURCE místo void**. |
ID3D10Asynchronní |
ID3D11AsynchronousBegin, End a GetData byly přesunuty do ID3D11DeviceContext. |
ID3D10x | Rozhraní ID3D11x Many jsou stejná mezi těmito dvěma rozhraními API. |
Další související technologie
10/10.1 Řešení | 11 Řešení |
---|---|
Kompilátor HLSL (D3D10Compile*, D3DX10Compile*) a rozhraní API reflexe shaderu | D3DCompiler (viz D3DCompiler.h) Poznámka: pro aplikace pro Windows Store se rozhraní API D3DCompiler podporují jenom pro vývoj, nikoli pro nasazení. |
Efekty 10 |
Effects 11 je k dispozici jako sdílený zdroj online.
Poznámka: Toto řešení není vhodné pro aplikace pro Windows Store, protože vyžaduje rozhraní API D3DCompiler za běhu (nasazení). |
Matematika D3DX9/D3DX10 | DirectXMath |
D3DX10 | D3DX11 ve starší verzi sady DirectX SDK DirectXTex, DirectXTKa DirectXMesh nabízejí alternativy k mnoha technologiím ve starších knihovnách D3DX10 a D3DX11. Direct2D a DirectWrite nabízejí vysoce kvalitní podporu vykreslování čar a písem. |
Informace o starší verzi sady DirectX SDK najdete v tématu Kde je sada DirectX SDK?.
Direct3D 10.1 do Direct3D 11
Direct3D 10.1 je rozšíření rozhraní Direct3D 10 a všechny funkce Direct3D 10.1 jsou k dispozici v Direct3D 11. Většina přenosu z verze 10.1 na 11 již byla řešena výše, při přechodu z 10 na 11.
Výčty a definice
Direct3D 10.1 | Direct3D 11 |
---|---|
D3D10_FEATURE_LEVEL1 |
D3D_FEATURE_LEVELIdentické, ale definované v D3DCommon.h plus přidání D3D_FEATURE_LEVEL_11_0 pro hardware třídy 11 spolu s D3D_FEATURE_LEVEL_9_1, D3D_FEATURE_LEVEL_9_2 a D3D_FEATURE_LEVEL_9_3 pro 10level9 (D3D10_FEATURE_LEVEL_9_1, D3D10_FEATURE_LEVEL_9_2 a D3D10_FEATURE_LEVEL_9_3 byly přidány také pro verzi 10.1 do d3d10_1.h) |
Struktury
Direct3D 10.1 | Direct3D 11 |
---|---|
D3D10_BLEND_DESC1 |
D3D11_BLEND_DESCVerze 11 je shodná s verzí 10.1. |
D3D10_SHADER_RESOURCE_VIEW_DESC1 |
D3D11_SHADER_RESOURCE_VIEW_DESCVerze 11 je shodná s verzí 10.1. |
Rozhraní
Direct3D 10.1 | Direct3D 11 |
---|---|
ID3D10Device1 |
ID3D11Device a ID3D11DeviceContext Rozhraní zařízení bylo rozděleno do těchto dvou částí. Pro rychlé přenosy můžete použít ID3D11Device::GetImmediateContext. " ID3D10Device::GetTextFilterSize" a "SetTextFilerSize" metody již neexistují. Viz DirectWrite. Create*Shader přebírá další volitelný parametr pro ID3D11ClassLinkage. *SetShader a *GetShader mají další volitelné parametry pro ID3D11ClassInstance(s). CreateGeometryShaderWithStreamOutput přebírá pole a počet kroků ve více výstupních proudech. Limit parametru NumEntries CreateGeometryShaderWithStreamOutput se zvýšil na D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT v Direct3D 11. |
ID3D10BlendState1 | ID3D11BlendState |
ID3D10ShaderResourceView1 | ID3D11ShaderResourceView |
Nové funkce pro Direct3D 11
Po aktualizaci kódu tak, aby používal rozhraní API Direct3D 11, existuje mnoho nových funkcí, které zvážit.
- Vícevláknové vykreslování prostřednictvím seznamů příkazů a více kontextů
- Implementace pokročilých algoritmů pomocí výpočetního shaderu (pomocí profilů shaderu 4.0, 4.1 nebo 5.0)
- Nové hardwarové funkce třídy 11:
- HLSL Shader Model 5.0
- Dynamické propojení shaderu
- Tessellation prostřednictvím Hull a Domain shaderů
- Nové formáty komprese bloků: BC6H pro obrázky HDR, BC7 pro standardní obrázky s vyšší věrností
- Použití technologie 10level9 pro vykreslování na mnoha zařízeních Model shaderu 2.0 a Shader Model 3.0 prostřednictvím rozhraní API DIrect3D 11 pro podporu hardwaru s nižším koncem videa v systémech Windows Vista a Windows 7.
- Využití softwarového vykreslovacího zařízení WARP
Nové funkce pro DirectX 11.1
Systém Windows 8 obsahuje další vylepšení grafiky DirectX, která je potřeba zvážit při implementaci grafického kódu DirectX, který zahrnuje Direct3D 11.1, DXGI 1.2, Model ovladače zobrazení systému Windows (WDDM) 1.2, úroveň funkcí 11.1 hardware, kontexty zařízení Direct2D a další vylepšení.
Částečná podpora Direct3D 11.1 je dostupná i ve Windows 7 prostřednictvím Platform Update pro Windows 7, která je dostupná prostřednictvím Platform Update pro Windows 7.
Nové funkce pro DirectX 11.2
Windows 8.1 obsahuje Direct3D 11.2, DXGI 1.3a další vylepšení.