Compartilhar via


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.
O CopyResource dá suporte apenas à cópia; ele não dá suporte a qualquer alongamento, chave de cor ou mesclagem. CopyResource pode reinterpretar os dados do recurso entre alguns tipos de formato. Para obter mais informações, consulte Conversão de formato usando o Direct3D 10.1.

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

Confira também

ID3D11DeviceContext

ID3D11Resource