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.

Diagram buffer yang mencakup simpul dalam berbagai tahap pemanfaatan 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

Lihat juga

Enumerasi Sumber Daya