Migrasi ke Direct3D 11
Bagian ini menyediakan info untuk bermigrasi ke Direct3D 11 dari versi Direct3D yang lebih lama.
- Direct3D 9 ke Direct3D 11
- Direct3D 10 ke Direct3D 11
- Direct3D 10.1 ke Direct3D 11
- Fitur Baru untuk Direct3D 11
- Fitur Baru untuk DirectX 11.1
- Fitur Baru untuk DirectX 11.2
- Topik terkait
Direct3D 9 ke Direct3D 11
API Direct3D 11 dibangun berdasarkan peningkatan infrastructural yang dilakukan di Direct3D 10 dan 10.1. Porting dari Direct3D 9 ke Direct3D 11 mirip dengan berpindah dari Direct3D 9 ke Direct3D 10. Berikut ini adalah tantangan utama dalam upaya ini.
- Penghapusan semua penggunaan alur fungsi tetap demi shader yang dapat diprogram yang ditulis secara eksklusif dalam HLSL (dikompilasi melalui D3DCompiler alih-alih D3DX9).
- Manajemen status berdasarkan objek yang tidak dapat diubah daripada tombol status individual.
- Memperbarui untuk mematuhi persyaratan tautan ketat tata letak input buffer vertex dan tanda tangan shader.
- Mengaitkan tampilan sumber daya shader dengan semua sumber daya tekstur.
- Memetakan semua konten gambar ke DXGI_FORMAT, termasuk penghapusan semua format warna 24-bit (8/8/8), dan urutan warna RGB yang ketat untuk sebagian besar skenario.
- Memecah penggunaan status konstan global menjadi beberapa buffer konstan yang kecil dan lebih efisien yang diperbarui.
Untuk informasi selengkapnya tentang memindahkan dari Direct3D 9 ke Direct3D 10, lihat Direct3D 9 ke Direct3D 10 Pertimbangan.
Direct3D 10 ke Direct3D 11
Mengonversi program yang ditulis untuk menggunakan API Direct3D 10 atau 10.1 adalah proses lurus ke depan karena Direct3D 11 adalah ekstensi dari API yang ada. Hanya dengan satu pengecualian kecil (disebutkan di bawah ini - pemfilteran teks monokrom), semua metode dan fungsionalitas di Direct3D 10/10.1 tersedia di Direct3D 11. Kerangka di bawah ini menjelaskan perbedaan antara kedua API untuk membantu memperbarui kode yang ada. Perbedaan utama di sini meliputi:
- Operasi penyajian (Gambar, status, dll.) bukan lagi bagian dari antarmuka Perangkat, tetapi bukan bagian dari antarmuka DeviceContext baru bersama dengan peta sumber daya/Unmap dan metode kueri perangkat.
- Direct3D 11 mencakup semua peningkatan dan perubahan yang dilakukan antara Direct3D 10.0 dan 10.1
Enumerasi dan Definisi
Direct3D 10 | Direct3D 11 |
---|---|
DXGI_FORMAT | DXGI_FORMAT Beberapa format DXGI baru ditentukan. |
D3D10_CREATE_DEVICE_SWITCH_TO_REF | D3D11_CREATE_DEVICE_SWITCH_TO_REF Fungsionalitas switch-to-ref tidak didukung oleh Direct3D 11. |
D3D10_DRIVER_TYPE | D3D_DRIVER_TYPE Perhatikan bahwa pengidentifikasi enumerasi di D3D_DRIVER_TYPE ditentukan ulang dari pengidentifikasi di D3D10_DRIVER_TYPE. Oleh karena itu, Anda harus yakin untuk menggunakan pengidentifikasi enumerasi alih-alih angka harfiah. D3D_DRIVER_TYPE didefinisikan dalam D3Dcommon.h. |
D3D10_RESOURCE_MISC_FLAG | D3D11_RESOURCE_MISC_FLAG Perhatikan bahwa banyak dari bendera ini didefinisikan ulang, jadi pastikan untuk menggunakan pengidentifikasi enumerasi alih-alih angka harfiah. |
D3D10_FILTER | D3D11_FILTER Perhatikan bahwa D3D10_FILTER_TEXT_1BIT pemfilteran teks dihapus dari Direct3D 11. Lihat DirectWrite. |
D3D10_COUNTER | D3D11_COUNTER Perhatikan bahwa penghitung netral vendor dihapus untuk Direct3D 11 karena jarang didukung. |
D3D10_x | D3D11_x Banyak enumerasi dan definisi sama, memiliki batas yang lebih besar, atau memiliki nilai tambahan. |
Struktur
Antarmuka
Direct3D 10 | Direct3D 11 |
---|---|
ID3D10Device | ID3D11Device dan ID3D11DeviceContext Antarmuka perangkat dibagi menjadi dua bagian ini. Untuk porting cepat, Anda dapat menggunakan ID3D11Device::GetImmediateContext. Metode "ID3D10Device::GetTextFilterSize" dan "SetTextFilerSize" tidak ada lagi. Lihat DirectWrite. Create*Shader mengambil parameter opsional tambahan untuk ID3D11ClassLinkage. *SetShader dan *GetShader mengambil parameter opsional tambahan untuk ID3D11ClassInstance. CreateGeometryShaderWithStreamOutput mengambil array dan menghitung beberapa stride aliran output. Batas untuk parameter NumEntries dari CreateGeometryShaderWithStreamOutput telah meningkat menjadi D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT di Direct3D 11. |
ID3D10Buffer | ID3D11Buffer |
ID3D10SwitchToRef | Fungsionalitas Switch-to-ref ID3D11SwitchToReftidak didukung di Direct3D 11. |
ID3D10Texture1D | ID3D11Texture1D |
ID3D10Texture2D | ID3D11Texture2D |
ID3D10Texture3D | ID3D11Texture3DMetode Peta dan Unmap dipindahkan ke ID3D11DeviceContext, dan semua metode Peta menggunakan D3D11_MAPPED_SUBRESOURCE alih-alih kekosongan**. |
ID3D10Asynchronous | ID3D11Asynchronous Begin, End, dan GetData dipindahkan ke ID3D11DeviceContext. |
ID3D10x | ID3D11x Banyak antarmuka yang identik antara dua API. |
Teknologi Terkait Lainnya
Solusi 10/10.1 | 11 Solusi |
---|---|
API refleksi HLSL Complier (D3D10Compile*, D3DX10Compile*) dan shader | D3DCompiler (lihat D3DCompiler.h) Catatan: Untuk aplikasi Windows Store, API D3DCompiler hanya didukung untuk pengembangan, bukan penyebaran. |
Efek 10 | Efek 11 tersedia sebagai sumber bersama secara online. Catatan: Solusi ini tidak cocok untuk aplikasi Windows Store karena memerlukan API D3DCompiler saat runtime (penyebaran). |
Matematika D3DX9/D3DX10 | DirectXMath |
D3DX10 | D3DX11 di DirectX SDK DirectXTex, DirectXTK, dan DirectXMesh warisan menawarkan alternatif untuk banyak teknologi di pustaka D3DX10 dan D3DX11 warisan. Direct2D dan DirectWrite menawarkan dukungan berkualitas tinggi untuk merender garis dan font bergaya. |
Untuk informasi tentang DirectX SDK warisan, lihat Di mana DirectX SDK?.
Direct3D 10.1 ke Direct3D 11
Direct3D 10.1 adalah ekstensi antarmuka Direct3D 10, dan semua fitur Direct3D 10.1 tersedia di Direct3D 11. Sebagian besar porting dari 10.1 hingga 11 sudah ditangani di atas bergerak dari 10 ke 11.
Enumerasi dan Definisi
Struktur
Direct3D 10.1 | Direct3D 11 |
---|---|
D3D10_BLEND_DESC1 | D3D11_BLEND_DESC Versi 11 identik dengan 10.1. |
D3D10_SHADER_RESOURCE_VIEW_DESC1 | D3D11_SHADER_RESOURCE_VIEW_DESC Versi 11 identik dengan 10.1. |
Antarmuka
Direct3D 10.1 | Direct3D 11 |
---|---|
ID3D10Device1 | ID3D11Device dan ID3D11DeviceContext Antarmuka perangkat dibagi menjadi dua bagian ini. Untuk porting cepat, Anda dapat menggunakan ID3D11Device::GetImmediateContext. Metode " ID3D10Device::GetTextFilterSize" dan "SetTextFilerSize" tidak ada lagi. Lihat DirectWrite. Create*Shader mengambil parameter opsional tambahan untuk ID3D11ClassLinkage. *SetShader dan *GetShader mengambil parameter opsional tambahan untuk ID3D11ClassInstance. CreateGeometryShaderWithStreamOutput mengambil array dan menghitung beberapa stride aliran output. Batas untuk parameter NumEntries dari CreateGeometryShaderWithStreamOutput telah meningkat menjadi D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT di Direct3D 11. |
ID3D10BlendState1 | ID3D11BlendState |
ID3D10ShaderResourceView1 | ID3D11ShaderResourceView |
Fitur Baru untuk Direct3D 11
Setelah kode Anda diperbarui untuk menggunakan API Direct3D 11, ada banyak fitur baru yang perlu dipertimbangkan.
- Penyajian multithread melalui daftar perintah dan beberapa konteks
- Menerapkan algoritma tingkat lanjut menggunakan Compute Shader (menggunakan profil shader 4.0, 4.1, atau 5.0)
- Fitur perangkat keras kelas 11 baru:
- HLSL Shader Model 5.0
- Linkage Shader Dinamis
- Tessellation melalui shader Hull dan Domain
- Format kompresi blok baru: BC6H untuk gambar HDR, BC7 untuk gambar standar keakuratan yang lebih tinggi
- Menggunakan teknologi 10level9 untuk penyajian pada banyak perangkat Shader Model 2.0 dan Shader Model 3.0 melalui API DIrect3D 11 untuk dukungan perangkat keras video ujung bawah pada Windows Vista dan Windows 7.
- Memanfaatkan perangkat penyajian perangkat lunak WARP.
Fitur Baru untuk DirectX 11.1
Windows 8 mencakup peningkatan grafis DirectX lebih lanjut untuk dipertimbangkan ketika Anda menerapkan kode grafis DirectX Anda, yang mencakup Direct3D 11.1, DXGI 1.2, Windows Display Driver Model (WDDM) 1.2, perangkat keras tingkat fitur 11.1, konteks perangkat Direct2D, dan peningkatan lainnya.
Dukungan parsial untuk Direct3D 11.1 juga tersedia di Windows 7 melalui Pembaruan Platform untuk Windows 7, yang tersedia melalui Pembaruan Platform untuk Windows 7.
Fitur Baru untuk DirectX 11.2
Windows 8.1 mencakup Direct3D 11.2, DXGI 1.3, dan peningkatan lainnya.