Condividi tramite


Metodo ID3D10Device::CopyResource (d3d10.h)

Copiare l'intero contenuto della risorsa di origine nella risorsa di destinazione usando la GPU.

Sintassi

void CopyResource(
  [in] ID3D10Resource *pDstResource,
  [in] ID3D10Resource *pSrcResource
);

Parametri

[in] pDstResource

Tipo: ID3D10Resource*

Puntatore alla risorsa di destinazione (vedere ID3D10Resource).

[in] pSrcResource

Tipo: ID3D10Resource*

Puntatore alla risorsa di origine (vedere ID3D10Resource).

Valore restituito

nessuno

Osservazioni

Questo metodo è insolito in quanto fa sì che la GPU esegua l'operazione di copia (simile a un memcpy dalla CPU). Di conseguenza, presenta alcune restrizioni progettate per migliorare le prestazioni. Ad esempio, le risorse di origine e di destinazione:

  • Deve essere di risorse diverse.
  • Deve essere lo stesso tipo.
  • Deve avere dimensioni identiche (inclusa la larghezza, l'altezza, la profondità e le dimensioni appropriate).
  • Deve avere formati compatibili, il che significa che i formati devono essere identici o almeno dello stesso gruppo di tipi. Ad esempio, una trama DXGI_FORMAT_R32G32B32_FLOAT può essere copiata in una trama DXGI_FORMAT_R32G32B32_UINT poiché entrambi questi formati si trovano nel gruppo DXGI_FORMAT_R32G32B32_TYPELESS. A partire da Direct3D 10.1, CopyResource può copiare tra alcuni tipi di formato. Per altre info, vedi Conversione del formato con Direct3D 10.1.
  • Potrebbe non essere attualmente mappato.
CopyResource supporta solo la copia; non supporta alcuna conversione stretch, color key, blend o format. A partire da Direct3D 10.1 , CopyResource può reinterpretare i dati delle risorse tra alcuni tipi di formato. Per altre info, vedi Conversione del formato con Direct3D 10.1.

Le risorse non modificabili e depth-stencil non possono essere usate come destinazione. Le risorse create con funzionalità multicampionamento non possono essere usate come origine o destinazione.

Il metodo è una chiamata asincrona che può essere aggiunta alla coda del buffer dei comandi. Questo tentativo di rimuovere blocchi della pipeline che possono verificarsi durante la copia dei dati. Per altri dettagli , vedere Considerazioni sulle prestazioni .

Un'applicazione che deve copiare solo una parte dei dati in una risorsa deve usare invece ID3D10Device::CopySubresourceRegion .

Differenze tra Direct3D 10 e Direct3D 10.1:

Direct3D 10.1 consente l'uso di risorse depth-stencil come origine o destinazione. Direct3D 10.1 consente l'uso di risorse multicampionamento come origine e destinazione solo se sia l'origine che la destinazione hanno un conteggio e una qualità multicampionati identici. Se l'origine e la destinazione differiscono in conteggio e qualità multicampionamento o una di esse è multicampionato e l'altra non è multicampionato, la chiamata a ID3D10Device::CopyResource ha esito negativo.

È possibile copiare tra risorse prestrutturate e tipizzate e trame compresse a blocchi. Vedere Conversione del formato con Direct3D 10.1.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione d3d10.h
Libreria D3D10.lib

Vedi anche

ID3D10Device

Interfaccia ID3D10Resource