Metodo ID3D11DeviceContext::CopyResource (d3d11.h)
Copiare l'intero contenuto della risorsa di origine nella risorsa di destinazione usando la GPU.
Sintassi
void CopyResource(
[in] ID3D11Resource *pDstResource,
[in] ID3D11Resource *pSrcResource
);
Parametri
[in] pDstResource
Tipo: ID3D11Resource*
Puntatore all'interfaccia ID3D11Resource che rappresenta la risorsa di destinazione.
[in] pSrcResource
Tipo: ID3D11Resource*
Puntatore all'interfaccia ID3D11Resource che rappresenta la risorsa di origine.
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 DXGI 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. CopyResource può copiare tra alcuni tipi di formato. Per altre info, vedi Conversione del formato con Direct3D 10.1.
- Non è attualmente possibile eseguire il mapping.
Non è possibile usare una risorsa non modificabile come destinazione. È possibile usare una risorsa depth-stencil come origine o una destinazione a condizione che il livello di funzionalità sia D3D_FEATURE_LEVEL_10_1 o superiore. Per i livelli di funzionalità 9_x, le risorse create con il flag D3D11_BIND_DEPTH_STENCIL possono essere usate solo come origine per CopyResource. Le risorse create con la funzionalità multicampionamento (vedere DXGI_SAMPLE_DESC) possono essere usate 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 se uno è multicampionato e l'altro non è multicampionato, la chiamata a ID3D11DeviceContext::CopyResource ha esito negativo. Usare ID3D11DeviceContext::ResolveSubresource per risolvere una risorsa multicampionato in una risorsa che non è multicampionato.
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 altre info, vedi Considerazioni sulle prestazioni.
È consigliabile usare ID3D11DeviceContext::CopySubresourceRegion se è necessario copiare solo una parte dei dati in una risorsa.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3d11.h |
Libreria | D3D11.lib |