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.
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.
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.
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) |