PFND3D10DDI_RESOURCECOPY funzione di callback (d3d10umddi.h)

La funzione ResourceCopy copia un'intera risorsa di origine in una risorsa di destinazione.

Sintassi

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

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

Parametri

unnamedParam1

hDevice [in]

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

hDstResource [in]

Handle della risorsa di destinazione in cui eseguire la copia.

unnamedParam3

hSrcResource [in]

Handle della risorsa di origine da cui eseguire la copia.

Valore restituito

nessuno

Osservazioni

Il driver può usare la funzione di callback pfnSetErrorCb per impostare un codice di errore.

Il runtime di Microsoft Direct3D chiama la funzione ResourceCopy del driver di visualizzazione in modalità utente per informare il driver di copiare dalla risorsa di origine specificata alla risorsa di destinazione specificata. Le risorse di origine e di destinazione non possono essere la stessa risorsa. Sia le risorse di origine che di destinazione devono essere dello stesso tipo di risorsa e avere le stesse dimensioni. I tipi di formato (valori tipizzati DXGI_FORMAT) di entrambe le risorse devono essere castable l'uno all'altro. L'origine e la risorsa di destinazione non devono essere attualmente mappate. Inoltre, i flag di creazione delle risorse limitano se la risorsa può partecipare all'operazione di copia.

Il driver non deve riscontrare errori, ad eccezione di D3DDDIERR_DEVICEREMOVED. Pertanto, se il driver passa qualsiasi errore, ad eccezione di D3DDDIERR_DEVICEREMOVED, in una chiamata alla funzione pfnSetErrorCb , il runtime Direct3D determinerà che l'errore è critico. Anche se il dispositivo è stato rimosso, il driver non deve restituire D3DDDIERR_DEVICEREMOVED; Tuttavia, se la rimozione del dispositivo interferisce con l'operazione di ResourceCopy (che in genere non dovrebbe verificarsi), il driver può restituire D3DDDIERR_DEVICEREMOVED.

Nota Le sezioni seguenti si applicano solo a Microsoft Direct3D versione 10.1 e successive, ovvero Windows Vista con Service Pack 1 (SP1) e versioni successive e Windows Server 2008 e versioni successive.
 
Il driver può implementare una funzione ResourceCopy che può contenere un'istruzione switch per elaborare la copia e la conversione. Ovvero, il driver può implementare un oggetto ResourceCopy e può impostare il membro pfnResourceConvert della struttura D3D10_1DDI_DEVICEFUNCS in modo che punti a ResourceCopy insieme al membro pfnResourceCopy di D3D10_1DDI_DEVICEFUNCS. Tuttavia, per migliorare le prestazioni, il driver può implementare funzioni ResourceCopy e ResourceConvert separate.

La versione Direct3D 10.1 di ResourceCopy presenta una differenza di funzionalità principale rispetto alla versione Direct3D 10.0 rispetto al membro ResourceDimension di D3D10DDIARG_CREATERESOURCE per le risorse di origine e di destinazione create nelle chiamate alla funzione CreateResource(D3D10) del driver. Per la versione Direct3D 10.0 di ResourceCopy, il membro ResourceDimension di D3D10DDIARG_CREATERESOURCE per le risorse di origine e di destinazione deve corrispondere. La versione Direct3D 10.1 di ResourceCopy consente un lieve relax per il membro ResourceDimension di D3D10DDIARG_CREATERESOURCE per le risorse di origine e di destinazione. La versione Direct3D 10.1 di ResourceCopy consente la copia delle risorse di origine Tex2D nelle risorse di destinazione TexCube o nelle risorse di origine TexCube nelle risorse di destinazione Tex2D. Inoltre, la distinzione tra TexCube a livello di risorsa è passata in Direct3D versione 10.1. La versione Direct3D 10.1 di ResourceCopy rappresenta solo se può copiare un TexCube. In Direct3D versione 10.0 copiare una risorsa, convalidare una destinazione di rendering multipla e così via (ovvero varie operazioni che richiedevano che il tipo di risorsa sia identico) includevano la distinzione di TexCube da considerare nel tipo di risorsa. In Direct3D versione 10.1 il runtime può determinare solo Tex2D.

Le sezioni seguenti elencano le condizioni per la copia e la conversione:

Copia

Per la copia, ResourceCopy garantisce che le risorse di origine e di destinazione siano state create tramite la funzione CreateResource(D3D10) del driver con le condizioni seguenti:

  • La risorsa di destinazione non è stata creata con il valore D3D10_DDI_USAGE_IMMUTABLE impostato nel membro Utilizzo della struttura D3D10DDIARG_CREATERESOURCE .
  • Le risorse di origine e di destinazione sono state create con lo stesso tipo di risorsa e dimensionalità (buffer, trama unidimensionale (1D) e così via, impostando lo stesso valore nel membro ResourceDimension di D3D10DDIARG_CREATERESOURCE.
  • Le risorse di origine e di destinazione non fanno parte della stessa risorsa.
  • Ogni formato di risorsa di origine e di destinazione specificato nel membro Format di D3D10DDIARG_CREATERESOURCE si trova nello stesso gruppo senza tipi.
  • Le risorse di origine e di destinazione devono avere lo stesso numero di campioni e livelli di qualità; ad eccezione delle risorse a campionamento singolo, che devono avere solo lo stesso numero di campioni.
ResourceCopy non garantisce che non sia attualmente eseguito il mapping di sottorisorse.

Conversione

Per la conversione, ResourceCopy garantisce che le risorse di origine e di destinazione siano state create tramite la funzione CreateResource(D3D10) del driver con le condizioni seguenti:

  • La risorsa di destinazione non è stata creata con il valore D3D10_DDI_USAGE_IMMUTABLE impostato nel membro Utilizzo della struttura D3D10DDIARG_CREATERESOURCE .
  • Le risorse di origine e di destinazione sono state create con lo stesso tipo di risorsa (buffer, trama unidimensionale (1D) e così via, impostando lo stesso valore nel membro ResourceDimension di D3D10DDIARG_CREATERESOURCE.
  • Le dimensioni delle risorse di origine e di destinazione corrispondono per la conversione.
  • Le risorse di origine e di destinazione non fanno parte della stessa risorsa.
  • Ogni formato di risorsa di origine e di destinazione specificato nel membro Format di D3D10DDIARG_CREATERESOURCE supporta l'operazione di conversione appropriata. Per le risorse compresse bloccate mipped, tutte le dimensioni vengono convalidate in modo da essere una potenza di due.
  • Le risorse di origine e di destinazione devono avere lo stesso numero di campioni e livelli di qualità; ad eccezione delle risorse a campionamento singolo, che devono avere solo lo stesso numero di campioni.
ResourceCopy non garantisce che non sia attualmente eseguito il mapping di sottorisorse.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione d3d10umddi.h (include D3d10umddi.h)

Vedi anche

CreateResource(D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb