Método ID3D10Device::CopySubresourceRegion (d3d10.h)
Copie uma região de um recurso de origem para um recurso de destino.
Sintaxe
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
Parâmetros
[in] pDstResource
Tipo: ID3D10Resource*
Um ponteiro para o recurso de destino (consulte ID3D10Resource).
[in] DstSubresource
Tipo: UINT
Índice de sub-recurso do destino.
[in] DstX
Tipo: UINT
A coordenada x do canto superior esquerdo da região de destino.
[in] DstY
Tipo: UINT
A coordenada y do canto superior esquerdo da região de destino.
[in] DstZ
Tipo: UINT
A coordenada z do canto superior esquerdo da região de destino. Para um sub-recurso 1D ou 2D, isso deve ser zero.
[in] pSrcResource
Tipo: ID3D10Resource*
Um ponteiro para o recurso de origem (consulte ID3D10Resource).
[in] SrcSubresource
Tipo: UINT
Índice de sub-recurso da origem.
[in] pSrcBox
Tipo: const D3D10_BOX*
Uma caixa 3D (consulte D3D10_BOX) que define o sub-recurso de origem que pode ser copiado. Se FOR NULL, todo o sub-recurso de origem será copiado. A caixa deve caber dentro do recurso de origem.
Uma caixa vazia resulta em uma no-op. Uma caixa estará vazia se o valor superior for maior ou igual ao valor inferior ou se o valor esquerdo for maior ou igual ao valor à direita ou se o valor frontal for maior ou igual ao valor de fundo. Quando a caixa está vazia, CopySubresourceRegion não executa uma operação de cópia.
Retornar valor
Nenhum
Comentários
A caixa de origem deve estar dentro do tamanho do recurso de origem. O local de destino é um valor absoluto (não um valor relativo). O local de destino pode ser deslocado do local de origem; no entanto, o tamanho da região a ser copiada (incluindo o local de destino) deve caber no recurso de destino.
Se os recursos forem buffers, todas as coordenadas estarão em bytes; se os recursos forem texturas, todas as coordenadas estarão em texels.
D3D10CalcSubresource é uma função auxiliar para calcular índices de sub-recursos.
CopySubresourceRegion executa a cópia na GPU (semelhante a um memcpy da CPU). Como consequência, os recursos de origem e destino devem atender aos seguintes critérios:
- Devem ser sub-recursos diferentes (embora possam ser do mesmo recurso).
- Deve ser do mesmo tipo.
- Deve ter formatos compatíveis (os formatos devem ser idênticos ou ser do mesmo grupo de tipos). Por exemplo, uma textura DXGI_FORMAT_R32G32B32_FLOAT pode ser copiada para uma textura DXGI_FORMAT_R32G32B32_UINT porque ambos os formatos estão no grupo DXGI_FORMAT_R32G32B32_TYPELESS. A partir do Direct3D 10.1, CopySubresourceRegion pode copiar entre alguns tipos de formato. Para obter mais informações, consulte Conversão de formato usando o Direct3D 10.1.
- Pode não estar mapeado no momento.
Se o aplicativo precisar copiar um recurso inteiro, recomendamos usar ID3D10Device::CopyResource .
CopySubresourceRegion é uma chamada assíncrona que o runtime pode adicionar à fila de buffer de comando. Esse comportamento assíncronoattempts para remover paralisações de pipeline que podem ocorrer ao copiar dados. Confira considerações de desempenho para obter mais detalhes.
Diferenças entre o Direct3D 10 e o Direct3D 10.1: O Direct3D 10 tem as seguintes limitações:
|
Exemplo
O snippet de código a seguir copia uma caixa (localizada em (120.100),(200.220)) de uma textura de origem para uma região (130.120)(210.240) em uma textura de destino.
D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );
Observe que, para uma textura 2D, front-and-back são sempre definidos como 0 e 1, respectivamente.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d10.h |
Biblioteca | D3D10.lib |