Bagikan melalui


Fitur Direct3D 11.2

Fungsionalitas berikut telah ditambahkan di Direct3D 11.2, yang disertakan dengan Windows 8.1, Windows RT 8.1, dan Windows Server 2012 R2.

Sumber daya berjenjang

Direct3D 11.2 memungkinkan Anda membuat sumber daya ubin yang dapat dianggap sebagai sumber daya logis besar yang menggunakan memori fisik dalam jumlah kecil. Sumber daya berjenjang berguna (misalnya) dengan medan dalam game, dan UI aplikasi.

Sumber daya ubin dibuat dengan menentukan bendera D3D11_RESOURCE_MISC_TILED . Untuk bekerja dengan sumber daya ubin, gunakan API ini:

Untuk informasi selengkapnya tentang sumber daya berjenjang, lihat Sumber daya berjenjang.

Periksa dukungan sumber daya berjenjang

Sebelum menggunakan sumber daya berjenjang, Anda perlu mencari tahu apakah perangkat mendukung sumber daya ubin. Berikut cara Anda memeriksa dukungan untuk sumber daya berjenjang:

HRESULT hr = D3D11CreateDevice(
    nullptr,                    // Specify nullptr to use the default adapter.
    D3D_DRIVER_TYPE_HARDWARE,   // Create a device using the hardware graphics driver.
    0,                          // Should be 0 unless the driver is D3D_DRIVER_TYPE_SOFTWARE.
    creationFlags,              // Set debug and Direct2D compatibility flags.
    featureLevels,              // List of feature levels this app can support.
    ARRAYSIZE(featureLevels),   // Size of the list above.
    D3D11_SDK_VERSION,          // Always set this to D3D11_SDK_VERSION for Windows Store apps.
    &device,                    // Returns the Direct3D device created.
    &m_d3dFeatureLevel,         // Returns feature level of device created.
    &context                    // Returns the device immediate context.
    );

if (SUCCEEDED(hr))
{
    D3D11_FEATURE_DATA_D3D11_OPTIONS1 featureData;
    DX::ThrowIfFailed(
        device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS1, &featureData, sizeof(featureData))
        );

    m_tiledResourcesTier = featureData.TiledResourcesTier;
}

Dukungan yang diperluas untuk perangkat WARP

Direct3D 11.2 memperluas dukungan untuk perangkat WARP , yang Anda buat dengan meneruskan D3D_DRIVER_TYPE_WARP dalam parameter DriverTypeD3D11CreateDevice. Perender perangkat lunak WARP di Direct3D 11.2 menambahkan dukungan penuh untuk fitur Direct3D tingkat 11_1, termasuk sumber daya ubin, IDXGIDevice3::Trim, permukaan BCn bersama, minblend, dan default peta. Dukungan ganda dalam shader HLSL juga telah diaktifkan bersama dengan dukungan untuk 16x MSAA.

Perintah anotasi grafik

Direct3D 11.2 memungkinkan Anda membuat anotasi perintah grafis dengan API ini:

Penautan shader HLSL

Windows 8.1 menambahkan kompilasi terpisah dan penautan shader HLSL, yang memungkinkan programmer grafis untuk membuat fungsi HLSL yang telah dikompilasi sebelumnya, mengemasnya ke dalam pustaka, dan menautkannya ke shader penuh pada run-time. Ini pada dasarnya setara dengan kompilasi, pustaka, dan penautan terpisah C/C++, dan memungkinkan programmer untuk menyusun kode HLSL yang telah dikompilasi sebelumnya ketika lebih banyak informasi tersedia untuk menyelesaikan komputasi. Untuk informasi selengkapnya tentang cara menggunakan penautan shader, lihat Menggunakan penautan shader.

Selesaikan langkah-langkah ini untuk membuat shader akhir menggunakan tautan dinamis pada durasi.

Untuk membuat dan menggunakan penautan shader

  1. Buat objek linker ID3D11Linker , yang mewakili konteks penautan. Satu konteks tidak dapat digunakan untuk menghasilkan beberapa shader; konteks penautan digunakan untuk menghasilkan satu shader dan kemudian konteks penautan dibuang.
  2. Gunakan D3DLoadModule untuk memuat dan mengatur pustaka dari blob pustaka mereka.
  3. Gunakan D3DLoadModule untuk memuat dan mengatur blob shader entri, atau buat shader FLG.
  4. Gunakan ID3D11Module::CreateInstance untuk membuat objek ID3D11ModuleInstance , lalu panggil fungsi pada objek ini untuk mengikat kembali sumber daya ke slot akhir mereka.
  5. Tambahkan pustaka ke linker, lalu panggil ID3D11Linker::Link untuk menghasilkan kode byte shader akhir yang kemudian dapat dimuat dan digunakan dalam runtime sama seperti shader yang sepenuhnya telah dikompilasi dan ditautkan.

Grafik penautan fungsi (FLG)

Windows 8.1 juga menambahkan Function Linking Graph (FLG). Anda dapat menggunakan FLG untuk membangun shader yang terdiri dari urutan pemanggilan fungsi yang telah dikompilasi yang meneruskan nilai satu sama lain. Saat menggunakan FLG, tidak perlu menulis HLSL dan memanggil pengkompilasi HLSL. Sebaliknya, struktur shader ditentukan secara terprogram menggunakan panggilan API C++. Simpul FLG mewakili tanda tangan input dan output serta pemanggilan fungsi pustaka yang telah dikompilasi sebelumnya. Urutan mendaftarkan node panggilan fungsi mendefinisikan urutan pemanggilan. Simpul tanda tangan input harus ditentukan terlebih dahulu, sementara simpul tanda tangan output harus ditentukan terakhir. Tepi FLG menentukan bagaimana nilai diteruskan dari satu simpul ke simpul lainnya. Jenis data nilai yang diteruskan harus sama; tidak ada konversi jenis implisit. Aturan bentuk dan gerimis mengikuti perilaku dan nilai HLSL hanya dapat diteruskan ke depan dalam urutan ini. Untuk informasi tentang API FLG, lihat ID3D11FunctionLinkingGraph.

Pengkompilasi HLSL Kotak Masuk

Pengkompilasi HLSL sekarang dalam kotak masuk di Windows 8.1 dan yang lebih baru. Sekarang, sebagian besar API untuk pemrograman shader dapat digunakan di aplikasi Windows Store yang dibuat untuk Windows 8.1 dan yang lebih baru. Banyak API untuk pemrograman shader tidak dapat digunakan di aplikasi Windows Store yang dibuat untuk Windows 8; halaman referensi untuk API ini ditandai dengan catatan. Tetapi beberapa API shader (misalnya, D3DCompileFromFile) masih hanya dapat digunakan untuk mengembangkan aplikasi Windows Store, dan bukan di aplikasi yang Anda kirimkan ke Windows Store; halaman referensi untuk API ini masih ditandai dengan catatan.

Apa yang baru di Direct3D 11