PFND3D11_1DDI_RESOURCECOPYREGION funzione di callback (d3d10umddi.h)

Copia un'area secondaria di origine in una posizione in una sottoresource di destinazione.

Sintassi

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

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(D3D11_1) non deve eseguire alcuna operazione di copia.

[in] CopyFlags

Valore che specifica le caratteristiche dell'operazione di copia come OR bit per bit dei valori nel tipo di enumerazione D3D11_1_DDI_COPY_FLAGS .

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(D3D11_1) del driver in modalità utente per informare il driver di copiare dall'area secondaria di origine specificata a una posizione nella sottoresource di destinazione specificata. Le sottoresource di origine e di destinazione 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 (che in genere non dovrebbe verificarsi), il driver può restituire D3DDDIERR_DEVICEREMOVED.

Il driver può implementare una funzione ResourceCopyRegion(D3D11_1) che può contenere un'istruzione switch per elaborare la copia e la conversione. Ovvero, il driver può implementare un oggetto ResourceCopyRegion(D3D11_1) e può impostare il membro pfnResourceConvertRegiondella struttura D3D11_1DDI_DEVICEFUNCS per puntare a ResourceCopyRegion(D3D11_1) insieme al membro pfnResourceCopyRegion di D3D11_1DDI_DEVICEFUNCS. Tuttavia, per migliorare le prestazioni, il driver può implementare funzioni ResourceCopyRegion(D3D11_1) e ResourceConvertRegion(D3D11_1).

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

Copia

Per la copia, ResourceCopyRegion(D3D11_1) garantisce che le risorse di origine e di destinazione siano state create tramite la funzione CreateResource(D3D11) 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 D3D11DDIARG_CREATERESOURCE.
  • Se la risorsa di origine o di destinazione ha il bit D3D10_DDI_BIND_DEPTH_STENCIL impostato nel membro BindFlags del D3D10DDIARG_CREATERESOURCE o è una risorsa a più esempi, ResourceCopyRegion(D3D11_1) 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 D3D11DDIARG_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(D3D11_1) non garantisce che la casella di origine che sia offset dagli offset di destinazione si adatta interamente alla risorsa. ResourceCopyRegion(D3D11_1) non garantisce inoltre che non siano attualmente mappate le sottoresource.

Conversione

Per la conversione, ResourceCopyRegion(D3D11_1) garantisce che le risorse di origine e di destinazione siano state create tramite la funzione CreateResource(D3D11) 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 D3D11DDIARG_CREATERESOURCE.
  • Se la risorsa di origine o di destinazione ha il bit D3D10_DDI_BIND_DEPTH_STENCIL impostato nel membro BindFlags di D3D11DDIARG_CREATERESOURCE o è una risorsa a più esempi, ResourceCopyRegion(D3D11_1) 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 D3D11DDIARG_CREATERESOURCE si trova nello stesso gruppo senza tipi.
  • Ogni formato di risorsa di origine e di destinazione specificato nel membro Formato di D3D11DDIARG_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(D3D11_1) non garantisce che non siano attualmente mappate le sottorisorse. ResourceCopyRegion(D3D11_1) 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 Windows 8
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Desktop
Intestazione d3d10umddi.h (include D3d10umddi.h)

Vedi anche

CreateResource(D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb