Método ID3D11DeviceContext::CopyResource (d3d11.h)
Copie todo o conteúdo do recurso de origem para o recurso de destino usando a GPU.
Sintaxe
void CopyResource(
[in] ID3D11Resource *pDstResource,
[in] ID3D11Resource *pSrcResource
);
Parâmetros
[in] pDstResource
Tipo: ID3D11Resource*
Um ponteiro para a interface ID3D11Resource que representa o recurso de destino.
[in] pSrcResource
Tipo: ID3D11Resource*
Um ponteiro para a interface ID3D11Resource que representa o recurso de origem.
Retornar valor
Nenhum
Comentários
Esse método é incomum porque faz com que a GPU execute a operação de cópia (semelhante a um memcpy da CPU). Como resultado, ele tem algumas restrições projetadas para melhorar o desempenho. Por exemplo, os recursos de origem e destino:
- Deve ser recursos diferentes.
- Deve ser do mesmo tipo.
- Deve ter dimensões idênticas (incluindo largura, altura, profundidade e tamanho conforme apropriado).
- Deve ter formatos DXGI compatíveis, o que significa que os formatos devem ser idênticos ou pelo menos do mesmo grupo de tipos. Por exemplo, uma textura DXGI_FORMAT_R32G32B32_FLOAT pode ser copiada para uma textura DXGI_FORMAT_R32G32B32_UINT, pois ambos os formatos estão no grupo DXGI_FORMAT_R32G32B32_TYPELESS. CopyResource pode copiar entre alguns tipos de formato. Para obter mais informações, consulte Conversão de formato usando o Direct3D 10.1.
- Não pode ser mapeado no momento.
Você não pode usar um recurso Imutável como destino. Você pode usar um recurso de estêncil de profundidade como uma origem ou um destino, desde que o nível do recurso seja D3D_FEATURE_LEVEL_10_1 ou superior. Para níveis de recursos 9_x, os recursos criados com o sinalizador D3D11_BIND_DEPTH_STENCIL só podem ser usados como uma fonte para CopyResource. Os recursos criados com a funcionalidade multisampling (consulte DXGI_SAMPLE_DESC) só poderão ser usados como origem e destino se a origem e o destino tiverem uma contagem e uma qualidade de multiamostras idênticas. Se a origem e o destino forem diferentes na contagem e na qualidade multisampled ou se um for multisampled e o outro não for multisampled, a chamada para ID3D11DeviceContext::CopyResource falhará. Use ID3D11DeviceContext::ResolveSubresource para resolve um recurso multisampled para um recurso que não é multisampled.
O método é uma chamada assíncrona, que pode ser adicionada à fila de buffer de comando. Isso tenta remover as paralisações de pipeline que podem ocorrer ao copiar dados. Para obter mais informações, consulte considerações de desempenho.
Recomendamos usar ID3D11DeviceContext::CopySubresourceRegion se você precisar copiar apenas uma parte dos dados em um recurso.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d11.h |
Biblioteca | D3D11.lib |