Metodo ID3D10Device::CopySubresourceRegion (d3d10.h)
Copiare un'area da una risorsa di origine a una risorsa di destinazione.
Sintassi
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
Parametri
[in] pDstResource
Tipo: ID3D10Resource*
Puntatore alla risorsa di destinazione (vedere ID3D10Resource).
[in] DstSubresource
Tipo: UINT
Indice subresource della destinazione.
[in] DstX
Tipo: UINT
Coordinata x dell'angolo superiore sinistro dell'area di destinazione.
[in] DstY
Tipo: UINT
Coordinata y dell'angolo superiore sinistro dell'area di destinazione.
[in] DstZ
Tipo: UINT
Coordinata z dell'angolo superiore sinistro dell'area di destinazione. Per una sottoresource 1D o 2D, questo deve essere zero.
[in] pSrcResource
Tipo: ID3D10Resource*
Puntatore alla risorsa di origine (vedere ID3D10Resource).
[in] SrcSubresource
Tipo: UINT
Indice subresource dell'origine.
[in] pSrcBox
Tipo: const D3D10_BOX*
Casella 3D (vedere D3D10_BOX) che definisce la sottoresource di origine che può essere copiata. Se NULL, l'intera sottoresource di origine viene copiata. La casella deve adattarsi alla risorsa di origine.
Una casella vuota genera un no-op. Una casella è vuota se il valore superiore è maggiore o uguale al valore inferiore oppure il valore sinistro è maggiore o uguale al valore destro oppure il valore anteriore è maggiore o uguale al valore posteriore. Quando la casella è vuota, CopySubresourceRegion non esegue un'operazione di copia.
Valore restituito
nessuno
Osservazioni
La casella di origine deve essere compresa nella dimensione della risorsa di origine. La posizione di destinazione è un valore assoluto (non un valore relativo). La posizione di destinazione può essere offset dalla posizione di origine; tuttavia, le dimensioni dell'area da copiare (inclusa la posizione di destinazione) devono essere incluse nella risorsa di destinazione.
Se le risorse sono buffer, tutte le coordinate sono in byte; se le risorse sono trame, tutte le coordinate sono in texel.
D3D10CalcSubresource è una funzione helper per il calcolo degli indici di sottoresource.
CopySubresourceRegion esegue la copia nella GPU (simile a un memcpy dalla CPU). Di conseguenza, le risorse di origine e destinazione devono soddisfare i criteri seguenti:
- Devono essere diverse sottoresource (anche se possono essere dalla stessa risorsa).
- Deve essere lo stesso tipo.
- Deve avere formati compatibili (i formati devono essere identici o essere dello stesso gruppo di tipi). Ad esempio, una trama DXGI_FORMAT_R32G32B32_FLOAT può essere copiata in una trama DXGI_FORMAT_R32G32B32_UINT perché entrambi questi formati si trovano nel gruppo DXGI_FORMAT_R32G32B32_TYPELESS. A partire da Direct3D 10.1, CopySubresourceRegion può copiare tra alcuni tipi di formato. Per altre informazioni, vedere Conversione del formato con Direct3D 10.1.
- Potrebbe non essere attualmente mappato.
Se l'app deve copiare un'intera risorsa, è consigliabile usare invece ID3D10Device::CopyResource .
CopySubresourceRegion è una chiamata asincrona che il runtime può aggiungere alla coda del buffer dei comandi. Questo comportamento asincrono viene eseguito per rimuovere gli stalli della pipeline che possono verificarsi durante la copia dei dati. Per altre informazioni, vedere Considerazioni sulle prestazioni .
Differenze tra Direct3D 10 e Direct3D 10.1: Direct3D 10 presenta le limitazioni seguenti:
|
Esempio
Il frammento di codice seguente copia una casella (situata in (120.100),(200.220)) da una trama di origine in un'area (130.120),(210.240) in una trama di destinazione.
D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );
Si noti che, per una trama 2D, la parte anteriore e posteriore sono sempre impostate rispettivamente su 0 e 1.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3d10.h |
Libreria | D3D10.lib |