enumerasi D3D11_MAP (d3d11.h)
Mengidentifikasi sumber daya yang akan diakses untuk dibaca dan ditulis oleh CPU. Aplikasi dapat menggabungkan satu atau beberapa bendera ini.
Sintaks
typedef enum D3D11_MAP {
D3D11_MAP_READ = 1,
D3D11_MAP_WRITE = 2,
D3D11_MAP_READ_WRITE = 3,
D3D11_MAP_WRITE_DISCARD = 4,
D3D11_MAP_WRITE_NO_OVERWRITE = 5
} ;
Konstanta
D3D11_MAP_READ Nilai: 1 Sumber daya dipetakan untuk dibaca. Sumber daya harus dibuat dengan akses baca (lihat D3D11_CPU_ACCESS_READ). |
D3D11_MAP_WRITE Nilai: 2 Sumber daya dipetakan untuk menulis. Sumber daya harus dibuat dengan tulis akses (lihat D3D11_CPU_ACCESS_WRITE). |
D3D11_MAP_READ_WRITE Nilai: 3 Sumber daya dipetakan untuk membaca dan menulis. Sumber daya harus dibuat dengan baca dan tulis akses (lihat D3D11_CPU_ACCESS_READ dan D3D11_CPU_ACCESS_WRITE). |
D3D11_MAP_WRITE_DISCARD Nilai: 4 Sumber daya dipetakan untuk menulis; konten sumber daya sebelumnya tidak akan terdefinisi. Sumber daya harus dibuat dengan akses tulis dan penggunaan dinamis (Lihat D3D11_CPU_ACCESS_WRITE dan D3D11_USAGE_DYNAMIC). |
D3D11_MAP_WRITE_NO_OVERWRITE Nilai: 5 Sumber daya dipetakan untuk menulis; konten sumber daya yang ada tidak dapat ditimpa (lihat Keterangan). Bendera ini hanya berlaku pada puncak dan buffer indeks. Sumber daya harus dibuat dengan akses tulis (lihat D3D11_CPU_ACCESS_WRITE). Tidak dapat digunakan pada sumber daya yang dibuat dengan bendera D3D11_BIND_CONSTANT_BUFFER . Catatan Runtime Direct3D 11.1, yang tersedia dimulai dengan Windows 8, memungkinkan pemetaan buffer konstan dinamis dan tampilan sumber daya shader (SRV) buffer dinamis dengan D3D11_MAP_WRITE_NO_OVERWRITE. Direct3D 11 dan runtime yang lebih lama membatasi pemetaan ke puncak atau buffer indeks. Untuk menentukan apakah perangkat Direct3D mendukung fitur-fitur ini, panggil ID3D11Device::CheckFeatureSupport dengan D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport mengisi anggota struktur D3D11_FEATURE_DATA_D3D11_OPTIONS dengan fitur perangkat. Anggota yang relevan di sini adalah MapNoOverwriteOnDynamicConstantBuffer dan MapNoOverwriteOnDynamicBufferSRV. |
Keterangan
Enumerasi ini digunakan dalam ID3D11DeviceContext::Map.
Arti D3D11_MAP_WRITE_NO_OVERWRITE
D3D11_MAP_WRITE_NO_OVERWRITE menandakan bahwa aplikasi berjanji untuk tidak menulis ke data yang digunakan oleh tahap perakitan input (IA). Sebagai gantinya, GPU memungkinkan aplikasi untuk menulis ke bagian lain dari buffer yang sama. Aplikasi harus memastikan bahwa aplikasi tidak menulis data apa pun yang digunakan oleh tahap IA.Misalnya, pertimbangkan buffer yang diilustrasikan dalam diagram berikut. Jika panggilan Draw telah dikeluarkan yang menggunakan simpul 4-6, maka aplikasi yang memanggil Peta pada buffer ini harus memastikan bahwa panggilan tersebut tidak menulis ke simpul yang akan diakses panggilan Draw selama penyajian.
Namun, memastikan hal ini bisa sulit, karena GPU seringkali banyak bingkai di belakang CPU dalam hal bingkai mana yang saat ini sedang diproses. Melacak bagian sumber daya mana yang digunakan karena panggilan yang dilakukan 2 hingga 5 bingkai yang lalu sulit dan rawan kesalahan. Karena itu, disarankan agar aplikasi hanya menulis ke bagian sumber daya yang tidak diinisialisasi saat menggunakan D3D11_MAP_WRITE_NO_OVERWRITE.Penggunaan umum D3D11_MAP_WRITE_DISCARD dengan D3D11_MAP_WRITE_NO_OVERWRITE
D3D11_MAP_WRITE_DISCARD dan D3D11_MAP_WRITE_NO_OVERWRITE biasanya digunakan bersama dengan buffer indeks/puncak dinamis. D3D11_MAP_WRITE_DISCARD juga dapat digunakan dengan tekstur dinamis. Namun, D3D11_MAP_WRITE_NO_OVERWRITE tidak dapat digunakan dengan tekstur dinamis.Penggunaan umum dari kedua bendera ini melibatkan pengisian buffer indeks/puncak dinamis dengan geometri yang dapat dilihat dari posisi kamera saat ini. Pertama kali data dimasukkan ke dalam buffer pada bingkai tertentu, Peta dipanggil dengan D3D11_MAP_WRITE_DISCARD; melakukannya membatalkan isi buffer sebelumnya. Buffer kemudian diisi dengan semua data yang tersedia.
Penulisan berikutnya ke buffer dalam bingkai yang sama harus menggunakan D3D11_MAP_WRITE_NO_OVERWRITE. Ini akan memungkinkan CPU untuk mengakses sumber daya yang berpotensi digunakan oleh GPU selama pembatasan yang dijelaskan sebelumnya dihormati.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | d3d11.h |