PFND3D10DDI_RESOURCECOPY função de retorno de chamada (d3d10umddi.h)

A função ResourceCopy copia um recurso de origem inteiro para um recurso de destino.

Sintaxe

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

void Pfnd3d10ddiResourcecopy(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  D3D10DDI_HRESOURCE unnamedParam3
)
{...}

Parâmetros

unnamedParam1

hDevice [in]

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

hDstResource [in]

Um identificador para o recurso de destino para o qual copiar.

unnamedParam3

hSrcResource [in]

Um identificador para o recurso de origem do qual copiar.

Retornar valor

Nenhum

Comentários

O driver pode usar a função de retorno de chamada pfnSetErrorCb para definir um código de erro.

O runtime do Microsoft Direct3D chama a função ResourceCopy do driver de exibição do modo de usuário para informar o driver a copiar do recurso de origem especificado para o recurso de destino especificado. Os recursos de origem e destino não podem ser o mesmo recurso. Os recursos de origem e de destino devem ser do mesmo tipo de recurso e ter as mesmas dimensões. Os tipos de formato (valores de tipo DXGI_FORMAT) de ambos os recursos devem ser conversíveis entre si. A origem e o recurso de destino não devem ser mapeados no momento. Além disso, os sinalizadores de criação de recursos restringem se o recurso pode participar da operação de cópia.

O driver não deve encontrar nenhum erro, exceto para D3DDDIERR_DEVICEREMOVED. Portanto, se o driver passar qualquer erro, exceto por D3DDDIERR_DEVICEREMOVED, em uma chamada para a função pfnSetErrorCb , o runtime do Direct3D determinará que o erro é crítico. Mesmo que o dispositivo tenha sido removido, o driver não precisará retornar D3DDDIERR_DEVICEREMOVED; no entanto, se a remoção do dispositivo interferiu na operação do ResourceCopy (o que normalmente não deve acontecer), o driver poderá retornar D3DDDIERR_DEVICEREMOVED.

Nota As seções a seguir se aplicam somente ao Microsoft Direct3D versão 10.1 e posterior (ou seja, Windows Vista com Service Pack 1 (SP1) e posterior e Windows Server 2008 e posterior).
 
O driver pode implementar uma função ResourceCopy que pode conter uma instrução switch para processar a cópia e a conversão. Ou seja, o driver pode implementar um ResourceCopy e pode definir o membro pfnResourceConvert da estrutura D3D10_1DDI_DEVICEFUNCS para apontar para ResourceCopy junto com o membro pfnResourceCopy de D3D10_1DDI_DEVICEFUNCS. No entanto, para melhorar o desempenho, o driver pode implementar funções Separadas ResourceCopy e ResourceConvert .

A versão Direct3D 10.1 do ResourceCopy tem uma grande diferença de funcionalidade da versão do Direct3D 10.0 em relação ao membro ResourceDimension do D3D10DDIARG_CREATERESOURCE para os recursos de origem e destino que foram criados em chamadas para a função CreateResource(D3D10) do driver. Para a versão Direct3D 10.0 do ResourceCopy, o membro ResourceDimension do D3D10DDIARG_CREATERESOURCE para os recursos de origem e destino deve corresponder. A versão Direct3D 10.1 do ResourceCopy permite um leve relaxamento para o membro ResourceDimension do D3D10DDIARG_CREATERESOURCE para os recursos de origem e destino. A versão Direct3D 10.1 do ResourceCopy permite a cópia de recursos de origem Tex2D em recursos de destino TexCube ou recursos de origem TexCube em recursos de destino Tex2D. Além disso, a distinção entre TexCube no nível do recurso se foi no Direct3D versão 10.1. A versão Direct3D 10.1 do ResourceCopy representa apenas se ele pode copiar um TexCube. No Direct3D versão 10.0, a cópia de um recurso, a validação de um destino de renderização múltipla e assim por diante (ou seja, várias operações que exigiam que o tipo de recurso fosse idêntico) incluíram a distinção de TexCube para considerar o tipo de recurso. No Direct3D versão 10.1, o runtime pode determinar apenas o Tex2D.

As seções a seguir listam condições para copiar e converter:

Copiando

Para copiar, o ResourceCopy garante que os recursos de origem e destino foram criados por meio da função CreateResource(D3D10) do driver com as seguintes condições:

  • O recurso de destino não foi criado com o valor D3D10_DDI_USAGE_IMMUTABLE definido no membro Uso da estrutura D3D10DDIARG_CREATERESOURCE .
  • Os recursos de origem e destino foram criados com o mesmo tipo de recurso e dimensionalidade (buffer, textura unidimensional (1D) e assim por diante) definindo o mesmo valor no membro ResourceDimension de D3D10DDIARG_CREATERESOURCE.
  • Os recursos de origem e destino não fazem parte exatamente do mesmo recurso.
  • Cada formato de recurso de origem e destino especificado no membro Format de D3D10DDIARG_CREATERESOURCE está no mesmo grupo sem tipo.
  • Os recursos de origem e destino devem ter o mesmo número de exemplos e níveis de qualidade; exceto para recursos de amostra única, que devem ter apenas o mesmo número de amostras.
O ResourceCopy não garante que nenhum sub-recurso esteja mapeado no momento.

Converter

Para conversão, o ResourceCopy garante que os recursos de origem e de destino foram criados por meio da função CreateResource(D3D10) do driver com as seguintes condições:

  • O recurso de destino não foi criado com o valor D3D10_DDI_USAGE_IMMUTABLE definido no membro Uso da estrutura D3D10DDIARG_CREATERESOURCE .
  • Os recursos de origem e destino foram criados com o mesmo tipo de recurso (buffer, textura unidimensional (1D) e assim por diante) definindo o mesmo valor no membro ResourceDimension de D3D10DDIARG_CREATERESOURCE.
  • As dimensões dos recursos de origem e destino correspondem à conversão.
  • Os recursos de origem e destino não fazem parte exatamente do mesmo recurso.
  • Cada formato de recurso de origem e destino especificado no membro Format de D3D10DDIARG_CREATERESOURCE dá suporte à operação de conversão apropriada. Para recursos compactados com blocos mipped, todas as dimensões são validadas como uma potência de dois.
  • Os recursos de origem e destino devem ter o mesmo número de exemplos e níveis de qualidade; exceto para recursos de amostra única, que devem ter apenas o mesmo número de amostras.
O ResourceCopy não garante que nenhum sub-recurso esteja mapeado no momento.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho d3d10umddi.h (inclua D3d10umddi.h)

Confira também

CreateResource(D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb