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.
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.
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 |