Condividi tramite


PFND3D10DDI_RESOURCECOPYREGION funzione di callback (d3d10umddi.h)

La funzione ResourceCopyRegion copia un'area secondaria di origine in una posizione in una sottoresource di destinazione.

Sintassi

PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;

void Pfnd3d10ddiResourcecopyregion(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3,
  UINT unnamedParam4,
  UINT unnamedParam5,
  UINT unnamedParam6,
  D3D10DDI_HRESOURCE unnamedParam7,
  UINT unnamedParam8,
  const D3D10_DDI_BOX *unnamedParam9
)
{...}

Parametri

unnamedParam1

hDevice [in]

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

hDstResource [in]

Handle alla risorsa di destinazione da copiare.

unnamedParam3

DstSubresource [in]

Indice che indica la sottoresource di destinazione da copiare.

unnamedParam4

DstX [in]

Coordinata x della sottoresource di destinazione.

unnamedParam5

DstY [in]

Coordinata y della sottoresource di destinazione. Per le sottoresource (1D) unidimensionali, DstY è impostato su zero.

unnamedParam6

DstZ [in]

Coordinata z della sottoresource di destinazione. Per le sottoresource unidimensionali (1D) e bidimensionali (2D), DstZ è impostato su zero.

unnamedParam7

hSrcResource [in]

Handle della risorsa di origine da cui copiare.

unnamedParam8

SrcSubresource [in]

Indice che indica la sottoresource di origine da cui copiare.

unnamedParam9

pSrcBox [in, facoltativo]

Puntatore a una struttura di D3D10_DDI_BOX che specifica una casella adatta alla sottoresource di origine o di destinazione. Se pSrcBox è NULL, il driver deve copiare l'intera sottoresouce di origine nella destinazione.

Se i membri della struttura D3D10_DDI_BOX sono tali che left>=right, top>=bottom o front>=back, pSrcBox viene considerato vuoto e ResourceCopyRegion non deve eseguire alcuna operazione di 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 ResourceCopyRegion del driver di visualizzazione in modalità utente per informare il driver di copiare dall'area di origine secondaria di origine specificata a una posizione nella sottoresource di destinazione specificata. Le sottoresource di origine e di destinazione non possono essere la stessa sottoresource della stessa risorsa. Sia le risorse di origine che di destinazione devono essere lo stesso tipo di risorsa e devono avere tipi di formato (valori tipizzati DXGI_FORMAT) convertibili tra loro.

Per i buffer, tutte le coordinate devono essere in byte; mentre per le trame, tutte le coordinate devono essere in pixel. La casella a cui punta il parametro pSrcBox non deve estendersi sui bordi dell'area secondaria di origine o sulla sottoresource di destinazione. 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 alcun errore, 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 è necessario restituire D3DDDIERR_DEVICEREMOVED; tuttavia, se la rimozione del dispositivo interferisce con l'operazione di ResourceCopyRegion (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 versioni successive ,ovvero Windows Vista con Service Pack 1 (SP1) e Windows Server 2008 e versioni successive.
 
Il driver può implementare una funzione ResourceCopyRegion che può contenere un'istruzione switch per elaborare la copia e la conversione. Ovvero, il driver può implementare un oggetto ResourceCopyRegion e può impostare il membro pfnResourceConvertRegion della struttura D3D10_1DDI_DEVICEFUNCS per puntare a ResourceCopyRegion insieme al membro pfnResourceCopyRegion di D3D10_1DDI_DEVICEFUNCS. Tuttavia, per migliorare le prestazioni, il driver può implementare funzioni ResourceCopyRegion e ResourceConvertRegion .

La versione Direct3D 10.1 di ResourceCopyRegion ha una differenza di funzionalità principale dalla versione Direct3D 10.0 per quanto riguarda il 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 ResourceCopyRegion, il membro ResourceDimension di D3D10DDIARG_CREATERESOURCE per le risorse di origine e di destinazione deve corrispondere. La versione Direct3D 10.1 di ResourceCopyRegion 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 ResourceCopyRegion 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 è andata in Direct3D versione 10.1. La versione Direct3D 10.1 di ResourceCopyRegion rappresenta solo se può copiare un TexCube. In Direct3D versione 10.0, la copia di una risorsa, la convalida di una destinazione di rendering multipla e così via ,ovvero varie operazioni che hanno richiesto che il tipo di risorsa sia identico, tutte includevano la distinzione di TexCube in modo da prendere in considerazione il 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, ResourceCopyRegion 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 Utilizzodella struttura D3D10DDIARG_CREATERESOURCE.
  • Se la risorsa di origine o di destinazione ha il D3D10_DDI_BIND_DEPTH_STENCIL bit impostato nel membro BindFlags del D3D10DDIARG_CREATERESOURCE o è una risorsa a più esempi, ResourceCopyRegion verifica che il parametro pSrcBox sia NULL, mentre i parametri DstX, DstY e DstZ sono 0.
  • Gli indici di sottoresource sono inclusi nell'intervallo.
  • Le restrizioni di allineamento si applicano alle coordinate.
  • Le risorse di origine e di destinazione non fanno parte della stessa sottoresource esatta.
  • Ogni formato di risorsa di origine e 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 campione singolo, che devono avere solo lo stesso numero di campioni.
ResourceCopyRegion non garantisce che la casella di origine che sia offset dagli offset di destinazione si adatta interamente alla risorsa. ResourceCopyRegion non garantisce inoltre che non siano attualmente mappate le sottorisorse.

Conversione

Per la conversione, ResourceCopyRegion 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 Utilizzodella struttura D3D10DDIARG_CREATERESOURCE.
  • Se la risorsa di origine o di destinazione ha il D3D10_DDI_BIND_DEPTH_STENCIL bit impostato nel membro BindFlags del D3D10DDIARG_CREATERESOURCE o è una risorsa a più esempi, ResourceCopyRegion verifica che il parametro pSrcBox sia NULL, mentre i parametri DstX, DstY e DstZ sono 0.
  • Gli indici di sottoresource sono inclusi nell'intervallo.
  • Le restrizioni di allineamento si applicano alle coordinate.
  • Le risorse di origine e di destinazione non fanno parte della stessa sottoresource esatta.
  • Ogni formato di risorsa di origine e destinazione specificato nel membro Format di D3D10DDIARG_CREATERESOURCE si trova nello stesso gruppo senza tipi.
  • Ogni formato di risorsa di origine e destinazione specificato nel membro Formato di D3D10DDIARG_CREATERESOURCE supporta l'operazione di conversione appropriata.
  • Le risorse di origine e di destinazione devono avere lo stesso numero di campioni e livelli di qualità; ad eccezione delle risorse a campione singolo, che devono avere solo lo stesso numero di campioni.
ResourceCopyRegion non garantisce che non siano attualmente mappate le sottorisorse. ResourceCopyRegion non garantisce inoltre che la casella di origine che sia offset dagli offset di destinazione si adatta interamente alla risorsa.

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

D3D10DDI_DEVICEFUNCS

D3D10_DDI_BOX

pfnSetErrorCb