Bagikan melalui


ID3D12Resource::WriteToSubresource method (d3d12.h)

Menggunakan CPU untuk menyalin data ke dalam sub sumber daya, memungkinkan CPU untuk memodifikasi konten sebagian besar tekstur dengan tata letak yang tidak terdefinisi.

Sintaks

HRESULT WriteToSubresource(
                 UINT            DstSubresource,
  [in, optional] const D3D12_BOX *pDstBox,
  [in]           const void      *pSrcData,
                 UINT            SrcRowPitch,
                 UINT            SrcDepthPitch
);

Parameter

DstSubresource

Jenis: UINT

Menentukan indeks subsumber daya.

[in, optional] pDstBox

Jenis: const D3D12_BOX*

Penunjuk ke kotak yang menentukan bagian sub sumber daya tujuan untuk menyalin data sumber daya. Jika NULL, data ditulis ke subsumber daya tujuan tanpa offset. Dimensi sumber harus sesuai dengan tujuan (lihat D3D12_BOX).

Kotak kosong menghasilkan no-op. Kotak kosong jika nilai atas lebih besar dari atau sama dengan nilai bawah, atau nilai kiri lebih besar dari atau sama dengan nilai kanan, atau nilai depan lebih besar dari atau sama dengan nilai belakang. Ketika kotak kosong, metode ini tidak melakukan operasi apa pun.

[in] pSrcData

Jenis: const void*

Penunjuk ke data sumber dalam memori.

SrcRowPitch

Jenis: UINT

Jarak dari satu baris data sumber ke baris berikutnya.

SrcDepthPitch

Jenis: UINT

Jarak dari satu ilis kedalaman data sumber ke bagian berikutnya.

Mengembalikan nilai

Jenis: HRESULT

Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 12.

Keterangan

Sumber daya harus terlebih dahulu dipetakan menggunakan Peta. Tekstur harus dalam status D3D12_RESOURCE_STATE_COMMON untuk akses CPU melalui WriteToSubresource dan ReadFromSubresource menjadi legal; tetapi buffer tidak.

Untuk efisiensi, pastikan batas dan perataan jangkauan dalam kotak adalah ( 64 / [byte per piksel] ) piksel secara horizontal. Batas dan perataan vertikal harus 2 baris, kecuali ketika format 1-byte-per-piksel digunakan, dalam hal ini 4 baris direkomendasikan. Irisan kedalaman tunggal per panggilan ditangani secara efisien. Disarankan tetapi tidak perlu menyediakan pointer dan langkah-langkah yang selaras dengan 128 byte.

Saat menulis ke tingkat sub mipmap, disarankan untuk menggunakan lebar dan tinggi yang lebih besar daripada yang dijelaskan di atas. Ini karena tingkat mipmap kecil sebenarnya dapat disimpan dalam blok memori yang lebih besar, dengan jumlah offsetting buram yang dapat mengganggu penyelarasan ke baris cache.

WriteToSubresource dan ReadFromSubresource memungkinkan pengoptimalan mendekati nol-copy untuk adaptor UMA, tetapi dapat secara dilarang mengganggu efisiensi adaptor diskrit/ NUMA karena data tekstur tidak dapat berada di memori video lokal. Aplikasi umum harus menempel pada teknik unggahan yang ramah diskrit, kecuali jika mereka mengenali arsitektur adaptor adalah UMA. Untuk detail selengkapnya tentang pengunggahan, lihat CopyTextureRegion, dan untuk detail selengkapnya tentang UMA, lihat D3D12_FEATURE_DATA_ARCHITECTURE.

Pada sistem UMA, rutinitas ini dapat digunakan untuk meminimalkan biaya penyalinan memori melalui pengoptimalan perulangan yang dikenal sebagai ubin perulangan. Dengan memecah unggahan menjadi chuck yang nyaman di cache CPU, bandwidth yang efektif antara CPU dan memori utama lebih dekat mencapai maksimum teoritis.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d12.h
Pustaka D3d12.lib
DLL D3d12.dll

Lihat juga

ID3D12Resource

Subresources