Condividi tramite


struttura D3DPRESENT_PARAMETERS

Descrive i parametri della presentazione.

Sintassi

typedef struct D3DPRESENT_PARAMETERS {
  UINT                BackBufferWidth;
  UINT                BackBufferHeight;
  D3DFORMAT           BackBufferFormat;
  UINT                BackBufferCount;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD               MultiSampleQuality;
  D3DSWAPEFFECT       SwapEffect;
  HWND                hDeviceWindow;
  BOOL                Windowed;
  BOOL                EnableAutoDepthStencil;
  D3DFORMAT           AutoDepthStencilFormat;
  DWORD               Flags;
  UINT                FullScreen_RefreshRateInHz;
  UINT                PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

Members

BackBufferWidth

Tipo: UINT

Larghezza in pixel dei buffer back della nuova catena di scambio. Se Windowed è FALSE (la presentazione è a schermo intero), questo valore deve essere uguale alla larghezza di una delle modalità di visualizzazione enumerate trovate tramite EnumAdapterModes. Se Windowed è TRUE e BackBufferWidth o BackBufferHeight è zero, viene acquisita la dimensione corrispondente dell'area client di hDeviceWindow (o la finestra messa a fuoco, se hDeviceWindow è NULL).

BackBufferHeight

Tipo: UINT

Altezza dei buffer back della nuova catena di scambio, in pixel. Se Windowed è FALSE (la presentazione è a schermo intero), questo valore deve essere uguale all'altezza di una delle modalità di visualizzazione enumerate trovate tramite EnumAdapterModes. Se Windowed è TRUE e BackBufferWidth o BackBufferHeight è zero, viene acquisita la dimensione corrispondente dell'area client di hDeviceWindow (o la finestra messa a fuoco, se hDeviceWindow è NULL).

BackBufferFormat

Tipo: D3DFORMAT

Formato del buffer nascosto. Per altre informazioni sui formati, vedere D3DFORMAT. Questo valore deve essere uno dei formati di destinazione di rendering convalidati da CheckDeviceType. È possibile usare GetDisplayMode per ottenere il formato corrente.

Infatti, è possibile specificare D3DFMT_UNKNOWN per BackBufferFormat in modalità finestra. Ciò indica al runtime di usare il formato in modalità di visualizzazione corrente ed elimina la necessità di chiamare GetDisplayMode.

Per le applicazioni con finestra, il formato del buffer nascosto non deve più corrispondere al formato in modalità schermo perché la conversione dei colori può ora essere eseguita dall'hardware (se l'hardware supporta la conversione dei colori). Il set di possibili formati di buffer nascosto è vincolato, ma il runtime consentirà di presentare qualsiasi formato di buffer nascosto valido a qualsiasi formato desktop. (C'è il requisito aggiuntivo che il dispositivo può essere operabile nel desktop; i dispositivi in genere non funzionano in modalità a 8 bit per pixel).

Le applicazioni a schermo intero non possono eseguire la conversione dei colori.

BackBufferCount

Tipo: UINT

Questo valore può essere compreso tra 0 e D3DPRESENT_BACK_BUFFERS_MAX (o D3DPRESENT_BACK_BUFFERS_MAX_EX quando si usa Direct3D 9Ex). I valori 0 vengono considerati come 1. Se non è possibile creare il numero di buffer back, il runtime non riuscirà a chiamare il metodo e riempirà questo valore con il numero di buffer back che è possibile creare. Di conseguenza, un'applicazione può chiamare il metodo due volte con la stessa struttura D3DPRESENT_PARAMETERS e aspettarsi che funzioni la seconda volta.

Il metodo ha esito negativo se non è possibile creare un buffer nascosto. Il valore di BackBufferCount influenza il set di effetti di scambio consentiti. In particolare, qualsiasi effetto di scambio D3DSWAPEFFECT_COPY richiede che vi sia esattamente un buffer nascosto.

MultiSampleType

Tipo: D3DMULTISAMPLE_TYPE

Membro del tipo enumerato D3DMULTISAMPLE_TYPE . Il valore deve essere D3DMULTISAMPLE_NONE a meno che SwapEffect non sia stato impostato su D3DSWAPEFFECT_DISCARD. Il multicampionamento è supportato solo se l'effetto di scambio è D3DSWAPEFFECT_DISCARD.

MultiSampleQuality

Tipo: DWORD

Livello di qualità. L'intervallo valido è compreso tra zero e uno minore del livello restituito da pQualityLevels usato da CheckDeviceMultiSampleType. Il passaggio di un valore maggiore restituisce l'errore D3DERR_INVALIDCALL. I valori abbinati delle destinazioni di rendering o delle superfici dello stencil di profondità e D3DMULTISAMPLE_TYPE devono corrispondere.

SwapEffect

Tipo: D3DSWAPEFFECT

Membro del tipo enumerato D3DSWAPEFFECT . Il runtime garantirà la semantica implicita relativa al comportamento di scambio del buffer; pertanto, se Windowed è TRUE e SwapEffect è impostato su D3DSWAPEFFECT_FLIP, il runtime creerà un buffer nascosto aggiuntivo e copierà il buffer iniziale in fase di presentazione.

D3DSWAPEFFECT_COPY richiede che BackBufferCount sia impostato su 1.

D3DSWAPEFFECT_DISCARD verrà applicato nel runtime di debug riempiendo qualsiasi buffer con disturbo dopo la presentazione.

Differenze tra Direct3D9 e Direct3D9Ex:

  • In Direct3D9Ex, D3DSWAPEFFECT_FLIPEX viene aggiunto per designare quando un'applicazione adotta la modalità flip. Ovvero, whan il frame di un'applicazione viene passato in modalità finestra (invece di copiata) a Desktop Window Manager (DWM) per la composizione. La modalità flip offre una larghezza di banda di memoria più efficiente e consente a un'applicazione di sfruttare le statistiche presenti a schermo intero. Non modifica il comportamento a schermo intero. Il comportamento della modalità flip è disponibile a partire da Windows 7.

 

hDeviceWindow

Tipo: HWND

La finestra del dispositivo determina la posizione e le dimensioni del buffer nascosto sullo schermo. Questa operazione viene usata da Direct3D quando il contenuto del buffer nascosto viene copiato nel buffer anteriore durante la presentazione.

  • Per un'applicazione a schermo intero, si tratta di un handle per la finestra superiore (ovvero la finestra messa a fuoco).

    Per le applicazioni che usano più dispositivi a schermo intero (ad esempio un sistema multimonitor), esattamente un dispositivo può usare la finestra messa a fuoco come finestra del dispositivo. Tutti gli altri dispositivi devono avere finestre di dispositivo univoce.

  • Per un'applicazione in modalità finestra, questo handle sarà la finestra di destinazione predefinita per Present. Se questo handle è NULL, verrà presa la finestra messa a fuoco.

Si noti che non viene effettuato alcun tentativo dal runtime per riflettere le modifiche apportate all'utente nelle dimensioni della finestra. Il buffer nascosto non viene reimpostato in modo implicito quando questa finestra viene reimpostata. Tuttavia, il metodo Present tiene automaticamente traccia delle modifiche della posizione della finestra.

Finestra

Tipo: BOOL

TRUE se l'applicazione viene eseguita con finestra; FALSE se l'applicazione viene eseguita a schermo intero.

EnableAutoDepthStencil

Tipo: BOOL

Se questo valore è TRUE, Direct3D gestirà i buffer di profondità per l'applicazione. Il dispositivo creerà un buffer depth-stencil al momento della creazione. Il buffer depth-stencil verrà impostato automaticamente come destinazione di rendering del dispositivo. Quando il dispositivo viene reimpostato, il buffer depth-stencil verrà eliminato automaticamente e ricreato nella nuova dimensione.

Se EnableAutoDepthStencil è TRUE, AutoDepthStencilFormat deve essere un formato depth-stencil valido.

AutoDepthStencilFormat

Tipo: D3DFORMAT

Membro del tipo enumerato D3DFORMAT . Formato della superficie automatica depth-stencil creata dal dispositivo. Questo membro viene ignorato a meno che EnableAutoDepthStencil non sia TRUE.

Flag

Tipo: DWORD

Una delle costanti D3DPRESENTFLAG .

FullScreen_RefreshRateInHz

Tipo: UINT

Frequenza con cui l'adattatore di visualizzazione aggiorna la schermata. Il valore dipende dalla modalità in cui l'applicazione è in esecuzione:

  • Per la modalità finestra, la frequenza di aggiornamento deve essere 0.
  • Per la modalità a schermo intero, la frequenza di aggiornamento è una delle frequenze di aggiornamento restituite da EnumAdapterModes.

PresentationInterval

Tipo: UINT

Frequenza massima in base alla quale i buffer back della catena di scambio possono essere presentati al buffer anteriore. Per una spiegazione dettagliata delle modalità e degli intervalli supportati, vedere D3DPRESENT.

Requisiti

Requisito Valore
Intestazione
D3D9Types.h

Vedi anche

Strutture Direct3D

CreateDevice

CreateAdditionalSwapChain

Presente

Reimpostazione