Bagikan melalui


Menyalin Nilai Depth-Stencil

Runtime Direct3D dari Microsoft memanggil fungsi Blt dari driver tampilan mode pengguna untuk menyalin nilai stensil kedalaman dari memori video ke memori sistem, atau sebaliknya. Driver dan perangkat keras harus melakukan konversi format dari, atau ke, semua format stensil kedalaman buram yang didukung driver (yaitu, semua format yang ditentukan oleh jenis enumerasi D3DDDIFORMAT kecuali D3DDDIFMT_D*_LOCKABLE) ke, atau dari, salah satu format berikut:

  • D3DDDIFMT_D16_LOCKABLE

  • D3DDDIFMT_D32_Terkunci

  • D3DDDIFMT_D32F_LOCKABLE

  • D3DDDIFMT_S8_LOCKABLE

Driver membuang saluran (kedalaman atau stensil) apa pun yang ada dalam format sumber tetapi tidak ada dalam format tujuan. Runtime tidak mengizinkan penyalinan antara permukaan depth-stencil yang tidak memiliki jenis saluran yang sama.

Driver pertama-tama mengonversi nilai kedalaman sumber menjadi nilai bilangan bulat yang tidak ditandatangani 32-bit, lalu dari nilai bilangan bulat yang tidak ditandatangani 32-bit ke representasi tujuan. Aturan berikut berlaku untuk kedua konversi ini:

  • Jika nilai kedalaman sumber adalah nilai floating-point, dibatasi ke [0,1] dan hasilnya dikalikan dengan _MAX_UINT.

  • Jika sumbernya integral dan tujuannya adalah bilangan bulat presisi yang lebih rendah, bit ekstra paling kanan akan dihapus.

  • Jika sumbernya integral dan tujuannya adalah bilangan bulat presisi yang lebih tinggi, bit ekstra paling kanan direplikasi dari bit paling signifikan di kiri.

  • Jika sumbernya integral dan tujuannya adalah nilai floating-point, bilangan bulat 32-bit dikonversi menjadi nilai floating-point dan hasilnya dibagi dengan _MAX_UINT.

Pengemudi tidak diwajibkan untuk memberikan perlakuan khusus pada nilai kedalaman yang tidak terdistribusi secara seragam.

Pengemudi memperluas nilai stensil sumber ke bilangan bulat 8-bit (artinya, pengemudi menambahkan nol di sebelah kiri nilai stensil sumber). Jika representasi tujuan menggunakan presisi yang lebih rendah, maka driver harus membuang bit yang paling signifikan untuk melakukan konversi.

Pengandar tampilan mode pengguna harus mendukung salinan stensil kedalaman dari sub-rektangel sembarang. Namun, driver tidak diperlukan untuk melakukan operasi cermin, peregangan, atau kunci warna selama salinan stensil kedalaman. Pengambilan sampel titik secara implisit diperlukan selama salinan stensil kedalaman.