D3DPRESENT _ PARAMETERS-Struktur
Beschreibt die Präsentationsparameter.
Syntax
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;
Member
-
BackBufferWidth
-
Typ: UINT
-
Breite der Rückpuffer der neuen Swapkette in Pixel. Wenn Windowed auf FALSE festgelegt ist (die Darstellung im Vollbildmodus), muss dieser Wert der Breite eines der aufzählten Anzeigemodi entsprechen, die über EnumAdapterModesgefunden werden. Wenn Windowed true ist und entweder BackBufferWidth oder BackBufferHeight 0 (null) ist, wird die entsprechende Dimension des Clientbereichs von hDeviceWindow (oder das Fokusfenster, wenn hDeviceWindow NULL ist) übernommen.
-
BackBufferHeight
-
Typ: UINT
-
Höhe der Hintergrundpuffer der neuen Swapkette in Pixel. Wenn Windowed auf FALSE festgelegt ist (die Darstellung im Vollbildmodus), muss dieser Wert der Höhe eines der aufzählten Anzeigemodi entsprechen, die über EnumAdapterModesgefunden werden. Wenn Windowed true ist und entweder BackBufferWidth oder BackBufferHeight 0 (null) ist, wird die entsprechende Dimension des Clientbereichs von hDeviceWindow (oder das Fokusfenster, wenn hDeviceWindow NULL ist) übernommen.
-
BackBufferFormat
-
Typ: D3DFORMAT
-
Das Backpufferformat. Weitere Informationen zu Formaten finden Sie unter D3DFORMAT. Dieser Wert muss eines der Renderzielformate sein, wie von CheckDeviceTypeüberprüft. Sie können GetDisplayMode verwenden, um das aktuelle Format abzurufen.
Tatsächlich kann D3DFMT _ UNKNOWN für BackBufferFormat im Fenstermodus angegeben werden. Dadurch wird die Runtime angewiesen, das aktuelle Anzeigemodusformat zu verwenden, und es ist nicht mehr erforderlich, GetDisplayModeaufzurufen.
Bei Anwendungen mit Fenstern muss das Backpufferformat nicht mehr mit dem Anzeigemodusformat übereinstimmen, da die Farbkonvertierung jetzt von der Hardware durchgeführt werden kann (wenn die Hardware die Farbkonvertierung unterstützt). Der Satz möglicher Backpufferformate ist eingeschränkt, aber die Runtime lässt zu, dass jedes gültige Backpufferformat in jedem Desktopformat angezeigt wird. (Es gibt die zusätzliche Anforderung, dass das Gerät auf dem Desktop ausgeführt werden kann. Geräte arbeiten in der Regel nicht in 8 Bits pro Pixelmodus.)
Vollbildanwendungen können keine Farbkonvertierung durchführen.
-
BackBufferCount
-
Typ: UINT
-
Dieser Wert kann zwischen 0 und D3DPRESENT _ BACK _ BUFFERS _ MAX (oder D3DPRESENT _ BACK _ BUFFERS MAX _ _ EX bei Verwendung von Direct3D 9Ex) sein. Werte von 0 werden als 1 behandelt. Wenn die Anzahl der Backpuffer nicht erstellt werden kann, schlägt die Laufzeit beim Methodenaufruf fehl und füllt diesen Wert mit der Anzahl der Backpuffer aus, die erstellt werden können. Daher kann eine Anwendung die -Methode zweimal mit der gleichen D3DPRESENT _ PARAMETERS-Struktur aufrufen und erwarten, dass sie das zweite Mal funktioniert.
Die Methode schlägt fehl, wenn kein Backpuffer erstellt werden kann. Der Wert von BackBufferCount beeinflusst, welche Tauscheffekte zulässig sind. Insbesondere erfordert jeder D3DSWAPEFFECT _ COPY-Swapeffekt, dass genau ein Backpuffer vorhanden ist.
-
MultiSampleType
-
Member des D3DMULTISAMPLE TYPE-Enumerationstyps. _ Der Wert muss D3DMULTISAMPLE NONE lauten, _ es sei denn, SwapEffect wurde auf D3DSWAPEFFECT _ DISCARD festgelegt. Multisampling wird nur unterstützt, wenn der Swap-Effekt D3DSWAPEFFECT _ DISCARD lautet.
-
MultiSampleQuality
-
Typ: DWORD
-
Qualitätsstufe. Der gültige Bereich liegt zwischen 0 (null) und 1 kleiner als die von "pQualityLevels" zurückgegebene Ebene, die von CheckDeviceMultiSampleTypeverwendet wird. Wenn Sie einen größeren Wert übergeben, wird der Fehler D3DERR _ INVALIDCALL zurückgegeben. Gekoppelte Werte von Renderzielen oder Tiefenschablonenoberflächen und D3DMULTISAMPLE _ TYPE müssen übereinstimmen.
-
SwapEffect
-
Typ: D3DSWAPEFFECT
-
Member des D3DSWAPEFFECT-Enumerationstyps. Die Laufzeit garantiert die implizite Semantik in Bezug auf das Pufferaustauschverhalten. Wenn Windowed daher TRUE und SwapEffect auf D3DSWAPEFFECT FLIP festgelegt _ ist, erstellt die Laufzeit einen zusätzlichen Backpuffer und kopiert den Puffer, der zur Präsentationszeit zum Frontpuffer wird.
D3DSWAPEFFECT _ COPY erfordert, dass BackBufferCount auf 1 festgelegt ist.
D3DSWAPEFFECT _ DISCARD wird in der Debuglaufzeit erzwungen, indem nach der Darstellung ein beliebiger Puffer mit Rauschen gefüllt wird.
Unterschiede zwischen Direct3D9 und Direct3D9Ex:
- In Direct3D9Ex wird D3DSWAPEFFECT _ FLIPEX hinzugefügt, um festzulegen, wann eine Anwendung den Flip-Modus einnimmt. Das heißt, der Frame einer Anwendung wird im Fenstermodus (anstatt kopiert) zur Komposition an den Desktopfenster-Manager (DWM) übergeben. Der Flip-Modus bietet eine effizientere Speicherbandbreite und ermöglicht einer Anwendung die Nutzung von Statistiken im Vollbildmodus. Das Vollbildverhalten wird nicht geändert. Das Flipmodusverhalten ist ab Windows 7 verfügbar.
-
hDeviceWindow
-
Typ: HWND
-
Das Gerätefenster bestimmt die Position und Größe des Hintergrundpuffers auf dem Bildschirm. Dies wird von Direct3D verwendet, wenn der Inhalt des Hintergrundpuffers während der Darstellungin den Frontpuffer kopiert wird.
Bei einer Vollbildanwendung ist dies ein Handle für das obere Fenster (das Fokusfenster).
Für Anwendungen, die mehrere Vollbildgeräte verwenden (z. B. ein Multimonitorsystem), kann genau ein Gerät das Fokusfenster als Gerätefenster verwenden. Alle anderen Geräte müssen über eindeutige Gerätefenster verfügen.
Bei einer Anwendung im Fenstermodus ist dieses Handle das Standardzielfenster für Present. Wenn dieses Handle NULL ist, wird das Fokusfenster geöffnet.
Beachten Sie, dass von der Laufzeit nicht versucht wird, Benutzeränderungen in der Fenstergröße widerzuspiegeln. Der Hintergrundpuffer wird nicht implizit zurückgesetzt, wenn dieses Fenster zurückgesetzt wird. Die Present-Methode verfolgt jedoch automatisch Änderungen an der Fensterposition nach.
-
Fenstermodus
-
Typ: BOOL
-
TRUE, wenn die Anwendung im Fenster ausgeführt wird; FALSE, wenn die Anwendung im Vollbildmodus ausgeführt wird.
-
EnableAutoDepthStencil
-
Typ: BOOL
-
Wenn dieser Wert TRUE ist, verwaltet Direct3D Tiefenpuffer für die Anwendung. Das Gerät erstellt beim Erstellen einen Tiefenschablonenpuffer. Der Tiefenschablonenpuffer wird automatisch als Renderziel des Geräts festgelegt. Wenn das Gerät zurückgesetzt wird, wird der Tiefenschablonenpuffer automatisch zerstört und in der neuen Größe neu erstellt.
Wenn EnableAutoDepthStencil true ist, muss AutoDepthStencilFormat ein gültiges Tiefenschablonenformat sein.
-
AutoDepthStencilFormat
-
Typ: D3DFORMAT
-
Member des D3DFORMAT-Enumerationstyps. Das Format der automatischen Tiefenschablonenoberfläche, die das Gerät erstellt. Dieser Member wird ignoriert, es sei denn, EnableAutoDepthStencil ist TRUE.
-
Flags
-
Typ: DWORD
-
Eine der D3DPRESENTFLAG-Konstanten.
-
FullScreen _ RefreshRateInHz
-
Typ: UINT
-
Die Rate, mit der der Anzeigeadapter den Bildschirm aktualisiert. Der Wert hängt vom Modus ab, in dem die Anwendung ausgeführt wird:
- Für den Fenstermodus muss die Aktualisierungsrate 0 sein.
- Für den Vollbildmodus ist die Aktualisierungsrate eine der Aktualisierungsraten, die von EnumAdapterModeszurückgegeben werden.
-
PresentationInterval
-
Typ: UINT
-
Die maximale Rate, mit der die Hintergrundpuffer der Swapkette dem Frontpuffer angezeigt werden können. Eine ausführliche Erläuterung der unterstützten Modi und Intervalle finden Sie unter D3DPRESENT.
Anforderungen
| Anforderung | Wert |
|---|---|
| Header |
|