Migrazione a Direct3D 11
Questa sezione fornisce informazioni per la migrazione a Direct3D 11 da una versione precedente di Direct3D.
- Da Direct3D 9 a Direct3D 11
- Da Direct3D 10 a Direct3D 11
- Da Direct3D 10.1 a Direct3D 11
- Nuove funzionalità per Direct3D 11
- Nuove funzionalità per DirectX 11.1
- Nuove funzionalità per DirectX 11.2
- Argomenti correlati
Da Direct3D 9 a Direct3D 11
L'API Direct3D 11 si basa sui miglioramenti infrastrutturali apportati in Direct3D 10 e 10.1. La conversione da Direct3D 9 a Direct3D 11 è simile al passaggio da Direct3D 9 a Direct3D 10. Di seguito sono riportate le sfide principali in questo sforzo.
- Rimozione di tutti gli utilizzi fissi della pipeline di funzioni a favore degli shader programmabili creati esclusivamente in HLSL (compilati tramite D3DCompiler anziché D3DX9).
- Gestione dello stato in base a oggetti non modificabili anziché a singoli interruttori di stato.
- Aggiornamento per garantire la conformità ai rigidi requisiti di collegamento dei layout di input del buffer dei vertici e delle firme shader.
- Associazione delle visualizzazioni delle risorse dello shader a tutte le risorse della trama.
- Mapping di tutto il contenuto dell'immagine a un DXGI_FORMAT, inclusa la rimozione di tutti i formati di colore a 24 bit (8/8/8) e l'ordinamento rigoroso dei colori RGB per la maggior parte degli scenari.
- Suddividendo l'utilizzo dello stato costante globale in diversi buffer costanti più piccoli ed efficienti aggiornati.
Per altre informazioni sul passaggio da Direct3D 9 a Direct3D 10, vedi Considerazioni su Direct3D 9 e Direct3D 10.
Da Direct3D 10 a Direct3D 11
La conversione di programmi scritti per l'uso dell'API Direct3D 10 o 10.1 è un processo semplice perché Direct3D 11 è un'estensione dell'API esistente. Con una sola eccezione secondaria (come indicato di seguito - filtro di testo monocromatico), tutti i metodi e le funzionalità in Direct3D 10/10.1 sono disponibili in Direct3D 11. La struttura seguente descrive le differenze tra le due API per facilitare l'aggiornamento del codice esistente. Le differenze principali includono:
- Le operazioni di rendering (Disegno, stato e così via) non fanno più parte dell'interfaccia Device, ma fanno parte della nuova interfaccia DeviceContext insieme ai metodi di query per le risorse Map/Unmap e dispositivo.
- Direct3D 11 include tutti i miglioramenti e le modifiche apportate tra Direct3D 10.0 e 10.1
Enumerazioni e definizioni
Direct3D 10 | Direct3D 11 |
---|---|
DXGI_FORMAT | DXGI_FORMAT sono stati definiti diversi nuovi formati DXGI. |
D3D10_CREATE_DEVICE_SWITCH_TO_REF | D3D11_CREATE_DEVICE_SWITCH_TO_REF La funzionalità switch-to-ref non è supportata da Direct3D 11. |
D3D10_DRIVER_TYPE | D3D_DRIVER_TYPE Si noti che gli identificatori di enumerazione in D3D_DRIVER_TYPE sono stati ridefinti dagli identificatori in D3D10_DRIVER_TYPE. Pertanto, è necessario assicurarsi di usare gli identificatori di enumerazione anziché i numeri letterali. D3D_DRIVER_TYPE è definito in D3Dcommon.h. |
D3D10_RESOURCE_MISC_FLAG | D3D11_RESOURCE_MISC_FLAG Si noti che molti di questi flag sono stati ridefinti, quindi assicurarsi di usare identificatori di enumerazione anziché numeri letterali. |
D3D10_FILTER | D3D11_FILTER Si noti che il filtro del testo D3D10_FILTER_TEXT_1BIT è stato rimosso da Direct3D 11. Vedere DirectWrite. |
D3D10_COUNTER | D3D11_COUNTER Si noti che i contatori indipendenti dal fornitore sono stati rimossi per Direct3D 11 perché sono stati raramente supportati. |
D3D10_x | D3D11_x Molte enumerazioni e definizioni sono uguali, hanno limiti maggiori o hanno valori aggiuntivi. |
Strutture
Interfacce
Direct3D 10 | Direct3D 11 |
---|---|
ID3D10Device | ID3D11Device e ID3D11DeviceContext L'interfaccia del dispositivo è stata suddivisa in queste due parti. Per la conversione rapida è possibile usare ID3D11Device::GetImmediateContext. I metodi "ID3D10Device::GetTextFilterSize" e "SetTextFilerSize" non esistono più. Vedere DirectWrite. Create*Shader accetta un parametro facoltativo aggiuntivo per ID3D11ClassLinkage. *SetShader e *GetShader accettano parametri facoltativi aggiuntivi per ID3D11ClassInstance.*SetShader and *GetShader take additional optional parameters for ID3D11ClassInstance(s). CreateGeometryShaderWithStreamOutput accetta una matrice e il conteggio per più passi del flusso di output. Il limite per il parametro NumEntries di CreateGeometryShaderWithStreamOutput è aumentato a D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT in Direct3D 11. |
ID3D10Buffer | ID3D11Buffer |
ID3D10SwitchToRef | La funzionalità switch-to-ref id3D11SwitchToRefnon è supportata in Direct3D 11. |
ID3D10Texture1D | ID3D11Texture1D |
ID3D10Texture2D | ID3D11Texture2D |
ID3D10Texture3D | ID3D11Texture3DI metodi Map e Unmap sono stati spostati in ID3D11DeviceContext e tutti i metodi Map usano D3D11_MAPPED_SUBRESOURCE anziché un void**. |
ID3D10Asynchronous | ID3D11Asynchronous Begin, End e GetData sono stati spostati in ID3D11DeviceContext. |
ID3D10x | ID3D11x Molte interfacce sono identiche tra le due API. |
Altre tecnologie correlate
Soluzione 10/10.1 | 11 Soluzione |
---|---|
Conforme a HLSL (D3D10Compile*, D3DX10Compile*) e api di reflection shader | D3DCompiler (vedi D3DCompiler.h) Nota: per le app di Windows Store, le API D3DCompiler sono supportate solo per lo sviluppo, non per la distribuzione. |
Effetti 10 | Effects 11 è disponibile come origine condivisa online. Nota: questa soluzione non è adatta alle app di Windows Store perché richiede le API D3DCompiler in fase di esecuzione (distribuzione). |
D3DX9/D3DX10 Math | DirectXMath |
D3DX10 | D3DX11 nella versione legacy di DirectX SDK DirectXTex, DirectXTK e DirectXMesh offrono alternative a molte tecnologie nelle librerie D3DX10 e D3DX11 legacy. Direct2D e DirectWrite offrono un supporto di alta qualità per il rendering di linee e tipi di carattere con stile. |
Per informazioni sull'SDK DirectX legacy, vedere Dove si trova DirectX SDK?.
Da Direct3D 10.1 a Direct3D 11
Direct3D 10.1 è un'estensione dell'interfaccia Direct3D 10 e tutte le funzionalità di Direct3D 10.1 sono disponibili in Direct3D 11. La maggior parte della conversione da 10,1 a 11 è già stata risolta in precedenza passando da 10 a 11.
Enumerazioni e definizioni
Strutture
Direct3D 10.1 | Direct3D 11 |
---|---|
D3D10_BLEND_DESC1 | D3D11_BLEND_DESC La versione 11 è identica alla 10.1. |
D3D10_SHADER_RESOURCE_VIEW_DESC1 | D3D11_SHADER_RESOURCE_VIEW_DESC La versione 11 è identica alla 10.1. |
Interfacce
Direct3D 10.1 | Direct3D 11 |
---|---|
ID3D10Device1 | ID3D11Device e ID3D11DeviceContext L'interfaccia del dispositivo è stata suddivisa in queste due parti. Per la conversione rapida è possibile usare ID3D11Device::GetImmediateContext. I metodi " ID3D10Device::GetTextFilterSize" e "SetTextFilerSize" non esistono più. Vedere DirectWrite. Create*Shader accetta un parametro facoltativo aggiuntivo per ID3D11ClassLinkage. *SetShader e *GetShader accettano parametri facoltativi aggiuntivi per ID3D11ClassInstance.*SetShader and *GetShader take additional optional parameters for ID3D11ClassInstance(s). CreateGeometryShaderWithStreamOutput accetta una matrice e il conteggio per più passi del flusso di output. Il limite per il parametro NumEntries di CreateGeometryShaderWithStreamOutput è aumentato a D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT in Direct3D 11. |
ID3D10BlendState1 | ID3D11BlendState |
ID3D10ShaderResourceView1 | ID3D11ShaderResourceView |
Nuove funzionalità per Direct3D 11
Dopo aver aggiornato il codice per usare l'API Direct3D 11, sono disponibili numerose nuove funzionalità da considerare.
- Rendering multithreading tramite elenchi di comandi e più contesti
- Implementazione di algoritmi avanzati con compute shader (con profili shader 4.0, 4.1 o 5.0)
- Nuove funzionalità hardware di classe 11:
- Modello shader HLSL 5.0
- Collegamento dello shader dinamico
- Tassellatura tramite hull shader e domain shader
- Nuovi formati di compressione a blocchi: BC6H per immagini HDR, BC7 per immagini standard con fedeltà superiore
- Utilizzo della tecnologia 10level9 per il rendering su molti dispositivi Modello 2.0 e Shader Model 3.0 tramite l'API DIrect3D 11 per il supporto hardware video di fascia inferiore in Windows Vista e Windows 7.
- Uso del dispositivo di rendering software WARP.
Nuove funzionalità per DirectX 11.1
Windows 8 include ulteriori miglioramenti alla grafica DirectX da considerare quando si implementa il codice grafico DirectX, che includono hardware Direct3D 11.1, DXGI 1.2, Windows Display Driver Model (WDDM) 1.2, hardware di livello di funzionalità 11.1, contesti di dispositivo Direct2D e altri miglioramenti.
Il supporto parziale per Direct3D 11.1 è disponibile anche in Windows 7 tramite l'aggiornamento della piattaforma per Windows 7, disponibile tramite l'aggiornamento della piattaforma per Windows 7.
Nuove funzionalità per DirectX 11.2
Windows 8.1 include Direct3D 11.2, DXGI 1.3 e altri miglioramenti.