Condividi tramite


Metodo IDXGISwapChain::P resent (dxgi.h)

Presenta un'immagine sottoposta a rendering all'utente.

Sintassi

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

Parametri

SyncInterval

Tipo: UINT

Intero che specifica come sincronizzare la presentazione di una cornice con lo spazio vuoto verticale.

Per il modello bit-block transfer (bitblt) (DXGI_SWAP_EFFECT_DISCARD o DXGI_SWAP_EFFECT_SEQUENTIAL), i valori sono:

  • 0 - La presentazione viene eseguita immediatamente, non esiste alcuna sincronizzazione.
  • Da 1 a 4 : sincronizzare la presentazione dopo l'n° verticale vuoto.
Per il modello flip (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL), i valori sono:
  • 0 - Annullare il tempo rimanente nel frame presentato in precedenza e ignorare questo frame se viene accodato un frame più recente.
  • Da 1 a 4: sincronizzare la presentazione per almeno n spazi vuoti verticali.
Per un esempio che mostra come i valori dell'intervallo di sincronizzazione influiscono su una coda di presentazione capovolta, vedere Osservazioni.

Se l'area di aggiornamento supera più di un output (ognuno rappresentato da IDXGIOutput), Present esegue la sincronizzazione con l'output contenente il sotto rettangolo secondario più grande dell'area client della finestra di destinazione.

Flags

Tipo: UINT

Valore intero contenente le opzioni di presentazione della catena di scambio. Queste opzioni sono definite dalle costanti DXGI_PRESENT .

Valore restituito

Tipo: HRESULT

I possibili valori restituiti includono: S_OK, DXGI_ERROR_DEVICE_RESET o DXGI_ERROR_DEVICE_REMOVED (vedere DXGI_ERROR), DXGI_STATUS_OCCLUDED (vedere DXGI_STATUS) o D3DDDIERR_DEVICEREMOVED.

Nota Il metodo Present può restituire DXGI_ERROR_DEVICE_REMOVED o D3DDDIERR_DEVICEREMOVED se una scheda video è stata rimossa fisicamente dal computer o si è verificato un aggiornamento del driver per la scheda video.
 

Commenti

A partire da Direct3D 11.1, prendere in considerazione l'uso di IDXGISwapChain1::P resent1 perché è quindi possibile usare rettangoli dirty e il rettangolo di scorrimento nella presentazione della catena di scambio e, di conseguenza, usare meno larghezza di banda di memoria e di conseguenza meno potenza di sistema. Per altre info sull'uso di rettangoli dirty e del rettangolo di scorrimento nella presentazione della catena di scambio, vedi Uso di rettangoli dirty e rettangolo di scorrimento nella presentazione della catena di scambio.

Per ottenere prestazioni ottimali quando si capovolgono i buffer della catena di scambio in un'applicazione a schermo intero, vedere Hint per le prestazioni dell'applicazione a schermo intero.

Poiché la chiamata a Present potrebbe causare l'attesa del thread di rendering sul thread message-pump, prestare attenzione quando si chiama questo metodo in un'applicazione che usa più thread. Per altri dettagli, vedere Considerazioni sul multithreading.

Differenze tra Direct3D 9 e Direct3D 10:

Specificare DXGI_PRESENT_TEST nel parametro Flags è analogo a IDirect3DDevice9::TestCooperativeLevel in Direct3D 9.

Per le catene di scambio dei modelli di presentazione capovolte create con il valore DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL o DXGI_SWAP_EFFECT_DISCARD impostato, una presentazione con esito positivo rimuove il buffer nascosto 0 (in genere impostato da OMSetRenderTargets) dalla pipeline grafica, tranne quando si passa il flag DXGI_PRESENT_DO_NOT_SEQUENCE nel parametro Flags .

Per informazioni sul modo in cui i valori dei dati cambiano quando si presenta il contenuto nella schermata, vedere Conversione dei dati per lo spazio dei colori.

Capovolgere la coda del modello di presentazione

Si supponga che i fotogrammi seguenti con valori di intervallo di sincronizzazione vengano accodati dal meno recente (A) al più recente (E) prima di chiamare Present.

R: 3, B: 0, C: 0, D: 1, E: 0

Quando si chiama Present, il runtime mostra il frame A solo per un intervallo vuoto verticale. Il runtime termina il frame A in anticipo a causa dell'intervallo di sincronizzazione 0 nel frame B. Il runtime mostra quindi frame D per un intervallo vuoto verticale e quindi frame E fino a quando non si invia una nuova presentazione. Il runtime elimina i fotogrammi B e C.

Visualizzazione della frequenza di aggiornamento variabile

È un requisito di frequenza di aggiornamento variabile che indica che l'operazione di disinstallazione è abilitata. Il metodo CheckFeatureSupport può essere usato per determinare se questa funzionalità è disponibile e per impostare i flag necessari fare riferimento alle descrizioni di DXGI_PRESENT_ALLOW_TEARING e DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING e viene visualizzata la frequenza di aggiornamento variabile.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione dxgi.h
Libreria DXGI.lib

Vedi anche

IDXGISwapChain