D3DPRESENT

Descrive la relazione tra la frequenza di aggiornamento dell'adattatore e la frequenza con cui vengono completate le operazioni Present o Present . Questi valori fungono anche da valori di flag per il campo PresentationIntervals di D3DCAPS9.

Costante Descrizione
D3DPRESENT_DONOTFLIP
Usare il buffer anteriore sia come superficie di origine che come superficie di destinazione durante il rendering. La sincronizzazione dei fotogrammi è pianificata, ma la superficie visualizzata non cambia. Questo flag è disponibile solo quando l'applicazione è in modalità schermo intero e D3DSWAPEFFECT_FLIPEX è stato specificato.
Questo flag è disponibile solo in Direct3D 9Ex.
D3DPRESENT_DONOTWAIT
Una presentazione non può essere pianificata da un dispositivo hal. Se questo flag è impostato in una chiamata a Present e l'hardware è occupato durante l'elaborazione o l'attesa di un intervallo di sincronizzazione verticale, Present restituirà D3DERR_WASSTILLDRAWING per indicare che l'operazione blit è incompleta.
D3DPRESENT_FLIPRESTART
Riservato.
D3DPRESENT_FORCEIMMEDIATE
D3DPRESENT_INTERVAL_IMMEDIATE viene applicato a questa chiamata Present . Questo flag può essere specificato solo quando si usa D3DSWAPEFFECT_FLIPEX. I comportamenti delle presentazioni con finestra e a schermo intero sono gli stessi. Ciò è particolarmente utile per le app multimediali che vogliono eliminare i fotogrammi rilevati in ritardo e presentare fotogrammi successivi in fase di composizione. Se questo flag viene specificato in modo non corretto, verrà restituito un errore di parametro non valido. Quando vengono accodati più fotogrammi consecutivi con D3DPRESENT_FORCEIMMEDIATEs, viene visualizzato solo l'ultimo fotogramma per la presentazione finestrata e a schermo intero.
Questo flag è disponibile in Direct3D 9Ex nei sistemi operativi Windows 7 o versioni successive.
Quando si usa D3DSWAPEFFECT_FLIPEX, ogni fotogramma presentato utilizzando D3DPRESENT_INTERVAL_IMMEDIATE o D3DPRESENT_INTERVAL_FORCEIMMEDIATE sostituirà l'intervallo presente del frame precedente. Ad esempio, se si accodano i fotogrammi seguenti usando gli effetti di scambio seguenti: frame A (D3DPRESENT_INTERVAL_ONE), frame B(D3DPRESENT_INTERVAL_ONE), frame C(D3DPRESENT_INTERVAL_ONE), frame D(D3DPRESENT_INTERVAL_FORCEIMMEDIATE), frame D sostituirà l'intervallo di frame C presente. I fotogrammi visualizzati per intervallo presente sono frame A, frame B, (frame C sottoposto a override) frame D.
Vedere la sezione Osservazioni.
D3DPRESENT_INTERVAL_DEFAULT
Questo è quasi equivalente a D3DPRESENT_INTERVAL_ONE. Vedere la sezione Osservazioni.
D3DPRESENT_INTERVAL_ONE
Il conducente attenderà il periodo di ritracciamento verticale (il runtime "seguirà il fascio" per evitare lo strappo). Le operazioni presenti non saranno interessate più frequentemente rispetto all'aggiornamento dello schermo; il runtime verrà completato al massimo un'operazione Present per ogni periodo di aggiornamento dell'adapter. Equivale all'uso di D3DSWAPEFFECT_COPYVSYNC in DirectX 8.1. Questa opzione è sempre disponibile per catene di scambio finestrate e a schermo intero. Vedere la sezione Osservazioni.
D3DPRESENT_INTERVAL_TWO
Il conducente attenderà il periodo di ripresa verticale. Le operazioni presenti non saranno interessate più frequentemente di ogni secondo aggiornamento dello schermo. Controllare il limite PresentationIntervals (vedere D3DCAPS9) per verificare se D3DPRESENT_INTERVAL_TWO è supportato dal driver.
D3DPRESENT_INTERVAL_THREE
Il conducente attenderà il periodo di ripresa verticale. Le operazioni presenti non saranno interessate più frequentemente di ogni terzo aggiornamento dello schermo. Controllare il limite PresentationIntervals (vedere D3DCAPS9) per verificare se D3DPRESENT_INTERVAL_THREE è supportato dal driver.
D3DPRESENT_INTERVAL_FOUR
Il conducente attenderà il periodo di ripresa verticale. Le operazioni presenti non saranno interessate più frequentemente di ogni quarto aggiornamento dello schermo. Controllare il membro PresentationIntervals (vedere D3DCAPS9) per verificare se D3DPRESENT_INTERVAL_FOUR è supportato dal driver.
D3DPRESENT_INTERVAL_IMMEDIATE
Il runtime aggiorna immediatamente l'area client della finestra e potrebbe farlo più volte durante il periodo di aggiornamento dell'adattatore. Equivale all'uso di D3DSWAPEFFECT_COPY in DirectX 8. Le operazioni presenti potrebbero essere interessate immediatamente. Questa opzione è sempre disponibile per catene di scambio finestrate e a schermo intero. Vedere la sezione Osservazioni.
D3DPRESENT_LINEAR_CONTENT
Il contenuto del buffer nascosto da presentare è nello spazio dei colori lineare.
  • La presentazione convertirà in modo implicito dallo spazio lineare a sRGB (gamma = 2,2). Si tratta dell'unica conversione supportata.
  • Poiché questo flag rappresenta una proprietà del contenuto del buffer nascosto, è possibile specificare il flag durante una chiamata Present . In altre parole, un'applicazione può presentare contenuto lineare in un frame e quindi passare al contenuto corretto nel successivo.
  • Questo flag viene ignorato quando la catena di scambio è a schermo intero. Si noti che questo flag è disponibile solo nella versione esplicita della catena di scambio presente. Il metodo Present non accetta un parametro flags.
  • Questo flag viene sempre accettato, ma avrà effetto solo quando il driver espone >D3DCAPS3_LINEAR_TO_SRGB_PresentATION.
  • L'unico formato di buffer nascosto supportato è X8R8G8B8.
Vedere Catene di scambio finestrate.
D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR
Ritaglia il contenuto di cui è stato eseguito il rendering nel monitor o nel dispositivo di destinazione dell'adattatore, mostra le anteprime per il contenuto nella visualizzazione Flip3D e nelle anteprime della barra delle applicazioni su altri monitor.
Questo flag è disponibile solo in Direct3D 9Ex.
Per altri dettagli su questa funzionalità di Windows Vista, vedi Desktop Window Manager . Se non si esegue in modalità composizione desktop, il flag restituisce lo stesso comportamento di D3DPRESENTFLAG_DEVICECLIP.
Nota: Questo flag deve essere usato solo con effetto di scambio D3DSWAPEFFECT_FLIPEX. L'uso di questo flag con altri effetti di scambio è deprecato e potrebbe non funzionare nelle versioni future di Windows.
D3DPRESENT_UPDATEOVERLAYONLY
Aggiornamenti la posizione di sovrimpressione o i dati colorkey senza causare un capovolgimento effettivo e senza modificare la durata con cui viene visualizzata l'immagine.
Questo flag è disponibile solo in Direct3D 9Ex.
D3DPRESENT_HIDEOVERLAY
Disattiva l'hardware di sovrimpressione.
Questo flag è disponibile solo in Direct3D 9Ex.
D3DPRESENT_UPDATECOLORKEY
Ridisegna i dati colorkey.
Questo flag è disponibile solo in Direct3D 9Ex.

Commenti

La modalità finestra supporta D3DPRESENT_INTERVAL_DEFAULT, D3DPRESENT_INTERVAL_IMMEDIATE e D3DPRESENT_INTERVAL_ONE. D3DPRESENT_INTERVAL_DEFAULT e le D3DPRESENT_INTERVAL_ONE sono quasi equivalenti (vedere le informazioni relative alla risoluzione del timer di seguito). Essi eseguono in modo analogo a COPY_VSYNC in quanto c'è un solo presente per fotogramma, e impediscono la lacrima con trave-following. Al contrario, D3DPRESENT_INTERVAL_IMMEDIATE tenterà di fornire una frequenza di presentazione illimitata.

La modalità schermo intero supporta un utilizzo simile alla modalità finestra supportando D3DPRESENT_INTERVAL_IMMEDIATE indipendentemente dalla frequenza di aggiornamento o dall'effetto di scambio. D3DPRESENT_INTERVAL_DEFAULT usa la risoluzione del timer di sistema predefinita, mentre il D3DPRESENT_INTERVAL_ONE chiama timeBeginPeriod per migliorare la risoluzione del timer di sistema. Ciò migliora la qualità della sincronizzazione verticale, ma consuma leggermente più tempo di elaborazione. Entrambi i parametri tentano di sincronizzare verticalmente.

Requisiti

Requisito Valore
Intestazione
D3d9.h

Vedi anche

Costanti Direct3D