Método ID3D10Device::CopyResource (d3d10.h)

Copie todo o conteúdo do recurso de origem para o recurso de destino usando a GPU.

Sintaxe

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

Parâmetros

[in] pDstResource

Tipo: ID3D10Resource*

Um ponteiro para o recurso de destino (consulte ID3D10Resource).

[in] pSrcResource

Tipo: ID3D10Resource*

Um ponteiro para o recurso de origem (consulte ID3D10Resource).

Valor retornado

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:

  • Devem 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 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. A partir do Direct3D 10.1, CopyResource pode copiar entre alguns tipos de formato. Para obter mais informações, consulte Conversão de formato usando o Direct3D 10.1.
  • Talvez não esteja mapeado no momento.
O CopyResource dá suporte apenas à cópia; ele não dá suporte a conversões de stretch, color key, blend ou format. A partir do Direct3D 10.1, CopyResource pode reinterpretar os dados de recurso entre alguns tipos de formato. Para obter mais informações, consulte Conversão de formato usando o Direct3D 10.1.

Recursos imutáveis e de estêncil de profundidade não podem ser usados como destino. Os recursos criados com a funcionalidade multisampling não podem ser usados como uma origem ou destino.

O método é uma chamada assíncrona que pode ser adicionada à fila de buffer de comando. Isso tenta remover estações de pipeline que podem ocorrer ao copiar dados. Confira considerações de desempenho para obter mais detalhes.

Um aplicativo que só precisa copiar uma parte dos dados em um recurso deve usar ID3D10Device::CopySubresourceRegion .

Diferenças entre o Direct3D 10 e o Direct3D 10.1:

O Direct3D 10.1 permite que recursos de estêncil de profundidade sejam usados como uma origem ou destino. O Direct3D 10.1 permite que recursos multisampled sejam usados como origem e destino somente se a origem e o destino tiverem uma contagem e qualidade multisamplásticos idênticas. Se a origem e o destino forem diferentes na contagem e na qualidade multissamplod ou um deles for multisampled e o outro não for multisampled, a chamada para ID3D10Device::CopyResource falhará.

É possível copiar entre recursos pré-estruturados+tipados e texturas compactadas em bloco. Consulte Conversão de formato usando o Direct3D 10.1.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho d3d10.h
Biblioteca D3D10.lib

Confira também

ID3D10Device

ID3D10Resource Interface