ID3D11DeviceContext::CopySubresourceRegion method (d3d11.h)

Salin wilayah dari sumber daya sumber ke sumber daya tujuan.

Sintaks

void CopySubresourceRegion(
  [in]           ID3D11Resource  *pDstResource,
  [in]           UINT            DstSubresource,
  [in]           UINT            DstX,
  [in]           UINT            DstY,
  [in]           UINT            DstZ,
  [in]           ID3D11Resource  *pSrcResource,
  [in]           UINT            SrcSubresource,
  [in, optional] const D3D11_BOX *pSrcBox
);

Parameter

[in] pDstResource

Jenis: ID3D11Resource*

Penunjuk ke sumber daya tujuan (lihat ID3D11Resource).

[in] DstSubresource

Jenis: UINT

Indeks subresource tujuan.

[in] DstX

Jenis: UINT

Koordinat x sudut kiri atas wilayah tujuan.

[in] DstY

Jenis: UINT

Koordinat y di sudut kiri atas wilayah tujuan. Untuk sub sumber daya 1D, ini harus nol.

[in] DstZ

Jenis: UINT

Koordinat z sudut kiri atas wilayah tujuan. Untuk sub sumber daya 1D atau 2D, ini harus nol.

[in] pSrcResource

Jenis: ID3D11Resource*

Penunjuk ke sumber daya sumber (lihat ID3D11Resource).

[in] SrcSubresource

Jenis: UINT

Indeks subresource sumber.

[in, optional] pSrcBox

Jenis: const D3D11_BOX*

Penunjuk ke kotak 3D (lihat D3D11_BOX) yang menentukan sub sumber daya yang dapat disalin. Jika NULL, seluruh subsumber daya sumber disalin. Kotak harus pas dalam sumber daya sumber.

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. Saat kotak kosong, CopySubresourceRegion tidak melakukan operasi salin.

Nilai kembali

Tidak ada

Keterangan

Kotak sumber harus dalam ukuran sumber daya sumber. Offset tujuan, (x, y, dan z), memungkinkan kotak sumber untuk diimbangi saat menulis ke sumber daya tujuan; namun, dimensi kotak sumber dan offset harus dalam ukuran sumber daya. Jika Anda mencoba dan menyalin di luar sumber daya tujuan atau menentukan kotak sumber yang lebih besar dari sumber daya sumber, perilaku CopySubresourceRegion tidak terdefinisi. Jika Anda membuat perangkat yang mendukung lapisan debug, output debug melaporkan kesalahan pada panggilan CopySubresourceRegion yang tidak valid ini. Parameter yang tidak valid ke CopySubresourceRegion menyebabkan perilaku yang tidak terdefinisi dan dapat mengakibatkan penyajian, kliping, tanpa salinan, atau bahkan penghapusan perangkat penyajian yang salah.

Jika sumber daya adalah buffer, semua koordinat berada dalam byte; jika sumber daya adalah tekstur, semua koordinat berada dalam texel. D3D11CalcSubresource adalah fungsi pembantu untuk menghitung indeks sub sumber daya.

CopySubresourceRegion melakukan salinan pada GPU (mirip dengan memcpy oleh CPU). Sebagai konsekuensinya, sumber daya sumber dan tujuan:

  • Harus berupa subsumber daya yang berbeda (meskipun dapat berasal dari sumber daya yang sama).
  • Harus tipe yang sama.
  • Harus memiliki format DXGI yang kompatibel (identik atau dari grup jenis yang sama). Misalnya, tekstur DXGI_FORMAT_R32G32B32_FLOAT dapat disalin ke tekstur DXGI_FORMAT_R32G32B32_UINT karena kedua format ini berada dalam grup DXGI_FORMAT_R32G32B32_TYPELESS. CopySubresourceRegion dapat menyalin di antara beberapa jenis format. Untuk informasi selengkapnya, lihat Konversi Format menggunakan Direct3D 10.1.
  • Mungkin saat ini tidak dipetakan.
**CopySubresourceRegion** hanya mendukung salinan; ini tidak mendukung peregangan, kunci warna, atau campuran apa pun. **CopySubresourceRegion** dapat menginterpretasikan ulang data sumber daya di antara beberapa jenis format. Untuk informasi selengkapnya, lihat [Konversi format menggunakan Direct3D 10.1](/windows/win32/direct3d10/d3d10-graphics-programming-guide-resources-block-compression#format-conversion-using-direct3d-101).

Jika aplikasi Anda perlu menyalin seluruh sumber daya, sebaiknya gunakan ID3D11DeviceContext::CopyResource sebagai gantinya.

CopySubresourceRegion adalah panggilan asinkron, yang dapat ditambahkan ke antrean buffer perintah, upaya ini untuk menghapus kios alur yang mungkin terjadi saat menyalin data. Untuk informasi selengkapnya tentang kios alur, lihat pertimbangan performa.

CatatanHanya berlaku untuk tingkat fitur 9_x perangkat keras Jika Anda menggunakan ID3D11DeviceContext::UpdateSubresource atau CopySubresourceRegion untuk menyalin dari sumber daya penahapan ke sumber daya default, Anda dapat merusak konten tujuan. Ini terjadi jika Anda meneruskan kotak sumber NULL dan jika sumber daya sumber memiliki dimensi yang berbeda dari sumber daya tujuan atau jika Anda menggunakan offset tujuan, (x, y, dan z). Dalam situasi ini, selalu berikan kotak sumber yang merupakan ukuran penuh sumber daya sumber.
 
CatatanHanya berlaku untuk tingkat fitur 9_x perangkat keras Anda tidak dapat menggunakan CopySubresourceRegion untuk menyalin tekstur volume mipmapped.
 
CatatanHanya berlaku untuk tingkat fitur 9_x Subresources yang dibuat dengan bendera D3D11_BIND_DEPTH_STENCIL hanya dapat digunakan sebagai sumber untuk CopySubresourceRegion.
 
Catatan Jika Anda menggunakan CopySubresourceRegion dengan buffer stensil kedalaman atau sumber daya multisampel, Anda harus menyalin seluruh subsumber daya. Dalam situasi ini, Anda harus meneruskan 0 ke parameter DstX, DstY, dan DstZ dan NULL ke parameter pSrcBox . Selain itu, sumber daya sumber dan tujuan, yang diwakili oleh parameter pSrcResource dan pDstResource , harus memiliki nilai jumlah sampel yang identik.
 

Contoh

Cuplikan kode berikut menyalin kotak (terletak di (120.100),(200.220)) dari tekstur sumber ke wilayah (10.20),(90.140) dalam tekstur tujuan.
D3D11_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;

pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion );

Perhatikan, bahwa untuk tekstur 2D, depan dan belakang masing-masing diatur ke 0 dan 1.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d11.h
Pustaka D3D11.lib

Lihat juga

ID3D11DeviceContext

ID3D11Resource