Condividi tramite


Metodo IDirect3DDevice9Ex::P resentEx (d3d9.h)

Scambiare il buffer successivo della swapchain con il buffer anteriore.

Sintassi

HRESULT PresentEx(
  [in] const RECT    *pSourceRect,
  [in] const RECT    *pDestRect,
  [in] HWND          hDestWindowOverride,
  [in] const RGNDATA *pDirtyRegion,
  [in] DWORD         dwFlags
);

Parametri

[in] pSourceRect

Tipo: const RECT*

Puntatore a una struttura RECT che indica l'area nell'area di origine da copiare nelle coordinate client della finestra. Si applica solo quando la swapchain è stata creata con il flag di D3DSWAPEFFECT_COPY . Se NULL, viene visualizzata l'intera superficie di origine. Se il rettangolo supera la superficie di origine, viene ritagliato nella superficie di origine.

[in] pDestRect

Tipo: const RECT*

Puntatore alla struttura RECT che indica l'area di destinazione nell'area di destinazione nelle coordinate client della finestra. Si applica solo quando la swapchain è stata creata con il flag di D3DSWAPEFFECT_COPY . Se NULL, l'intera area client viene riempita. Se il rettangolo supera l'area client di destinazione, viene ritagliata nell'area client di destinazione.

[in] hDestWindowOverride

Tipo: HWND

Puntatore a una finestra di destinazione la cui area client viene presa come destinazione per questa presentazione. Se questo valore è NULL, il runtime usa il membro hDeviceWindow di D3DPRESENT_PARAMETERS per la presentazione.

Nota Se si crea una catena di scambio con D3DSWAPEFFECT_FLIPEX, è necessario passare NULL a hDestWindowOverride
 

[in] pDirtyRegion

Tipo: const RGNDATA*

Puntatore a una struttura RGNDATA che indica il set più piccolo di pixel da trasferire. Questo valore deve essere NULL a meno che la swapchain non sia stata creata con il flag di D3DSWAPEFFECT_COPY . Per altre informazioni sugli swapchain, vedere Flipping Surface (Direct3D 9).

Se questo valore non è NULL, l'area contenuta viene espressa nelle coordinate del buffer indietro. Il metodo tiene conto di questi rettangoli durante l'ottimizzazione della presentazione copiando solo i pixel all'interno dell'area o alcuni set di rettangoli adeguatamente espansi. Si tratta di un aiuto per l'ottimizzazione solo e l'applicazione non deve basarsi sull'area copiata esattamente. L'implementazione può scegliere di copiare l'intero rettangolo di origine.

[in] dwFlags

Tipo: DWORD

Consente all'applicazione di richiedere che il metodo venga restituito immediatamente quando il driver segnala che non può pianificare una presentazione. I valori validi sono 0 o qualsiasi combinazione di flag di D3DPRESENT .

  • Se dwFlags = 0, questo metodo si comporta come prima di Direct3D 9. Presente verrà eseguito fino a quando l'hardware non è libero, senza restituire un errore.
  • Se dwFlags = D3DPRESENT_DONOTFLIP il driver di visualizzazione viene chiamato con il buffer anteriore sia come superficie di origine che di destinazione. Il driver risponde pianificando una sincronizzazione frame, ma non modificando la superficie visualizzata. Questo flag è disponibile solo in modalità schermo intero o quando si usa D3DSWAPEFFECT_FLIPEX in modalità finestra.
  • Se dwFlags = D3DPRESENT_DONOTWAIT e l'hardware è occupato nell'elaborazione o in attesa di un intervallo di sincronizzazione verticale, il metodo restituirà D3DERR_WASSTILLDRAWING.
  • Se dwFlags = D3DPRESENT_FORCEIMMEDIATE, D3DPRESENT_INTERVAL_IMMEDIATE viene applicato alla chiamata Presente. Questo flag può essere specificato solo quando si usa D3DSWAPEFFECT_FLIPEX. Questo comportamento è lo stesso per le modalità con finestra e schermo intero.
  • Se dwFlags = D3DPRESENT_LINEAR_CONTENT, la correzione gamma viene eseguita dallo spazio lineare a sRGB per le catene di scambio finestrate. Questo flag avrà effetto solo quando il driver espone D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION(vedere Gamma (Direct3D 9)).

Valore restituito

Tipo: HRESULT

I valori restituiti possibili includono: S_OK, D3DERR_DEVICELOST, D3DERR_DEVICEHUNG, D3DERR_DEVICEREMOVED o D3DERR_OUTOFVIDEOMEMORY (vedere D3DERR). Per altre informazioni sui dispositivi persi, bloccati e rimossi, vedere Modifiche al comportamento del dispositivo perso.

Differenze tra Direct3D 9 e Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX è disponibile solo in Direct3D9Ex in esecuzione in Windows 7 (o più sistema operativo corrente).

Commenti

Analogamente al metodo IDirect3DDevice9::P resent , PresentEx aggiunge un parametro dwflags.

Quando la swapchain viene creata con D3DSWAPEFFECT_FLIPEX flag, pSourceRect, pDestRect e pDirtyRegion , è necessario impostare su NULL.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d9.h
Libreria D3D9.lib

Vedi anche

IDirect3DDevice9Ex