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 Swapchain in Pixel. Wenn Windowedauf FALSE festgelegt ist (die Präsentation ist vollbildig), muss dieser Wert der Breite eines der über EnumAdapterModes gefundenen enumAdapterModes-Anzeigemodi entsprechen. Wenn Windowedden Wert TRUE aufweist und entweder BackBufferWidth oder BackBufferHeight null ist, wird die entsprechende Dimension des Clientbereichs des hDeviceWindow (oder des Fokusfensters, wenn hDeviceWindowNULL ist) übernommen.
-
BackBufferHeight
-
Typ: UINT
-
Höhe der Backpuffer der neuen Swapchain in Pixel. Wenn Windowedauf FALSE festgelegt ist (die Präsentation ist vollbildig), muss dieser Wert der Höhe eines der über EnumAdapterModes ermittelten enumAdapterModes-Anzeigemodi entsprechen. Wenn Windowedden Wert TRUE aufweist und entweder BackBufferWidth oder BackBufferHeight null ist, wird die entsprechende Dimension des Clientbereichs des hDeviceWindow (oder des Fokusfensters, wenn hDeviceWindowNULL ist) übernommen.
-
BackBufferFormat
-
Typ: D3DFORMAT
-
Das Zurückpufferformat. 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 können D3DFMT_UNKNOWN für backBufferFormat im Fenstermodus angegeben werden. Dadurch wird die Laufzeit angewiesen, das aktuelle Anzeigemodusformat zu verwenden, und das Aufrufen von GetDisplayMode entfällt.
Bei Anwendungen mit Fenstern muss das Hintergrundpufferformat nicht mehr mit dem Anzeigemodusformat übereinstimmen, da die Farbkonvertierung jetzt von der Hardware durchgeführt werden kann (sofern die Hardware die Farbkonvertierung unterstützt). Der Satz möglicher Backpufferformate ist eingeschränkt, aber die Runtime ermöglicht es, jedes gültige Backpufferformat für jedes Desktopformat darzustellen. (Es besteht die zusätzliche Anforderung, dass das Gerät auf dem Desktop funktionsfähig ist. Geräte arbeiten in der Regel nicht im Modus mit 8 Bit pro Pixel.)
Vollbildanwendungen können keine Farbkonvertierung durchführen.
-
BackBufferCount
-
Typ: UINT
-
Dieser Wert kann zwischen 0 und D3DPRESENT_BACK_BUFFERS_MAX (oder bei Verwendung von Direct3D 9Ex D3DPRESENT_BACK_BUFFERS_MAX_EX ) sein. Werte von 0 werden als 1 behandelt. Wenn die Anzahl der Backpuffer nicht erstellt werden kann, schlägt die Laufzeit den Methodenaufruf fehl und füllt diesen Wert mit der Anzahl von Backpuffern auf, die erstellt werden könnten. Daher kann eine Anwendung die Methode zweimal mit derselben D3DPRESENT_PARAMETERS Struktur aufrufen und erwarten, dass sie beim zweiten 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 Rückpuffer vorhanden ist.
-
MultiSampleType
-
Typ: D3DMULTISAMPLE_TYPE
-
Member des D3DMULTISAMPLE_TYPE aufgezählten Typs. Der Wert muss D3DMULTISAMPLE_NONE sein, es sei denn , SwapEffect wurde auf D3DSWAPEFFECT_DISCARD festgelegt. Multisampling wird nur unterstützt, wenn der Auslagerungseffekt D3DSWAPEFFECT_DISCARD ist.
-
MultiSampleQuality
-
Typ: DWORD
-
Qualitätsstufe. Der gültige Bereich liegt zwischen 0 und 1 kleiner als die von pQualityLevels zurückgegebene Ebene, die von CheckDeviceMultiSampleType verwendet wird. Wenn Sie einen größeren Wert übergeben, wird der Fehler D3DERR_INVALIDCALL zurückgegeben. Gekoppelte Werte von Renderzielen oder tiefen Schablonenoberflächen und D3DMULTISAMPLE_TYPE müssen übereinstimmen.
-
SwapEffect
-
Typ: D3DSWAPEFFECT
-
Member des aufgezählten D3DSWAPEFFECT-Typs . Die Laufzeit garantiert die implizierte Semantik in Bezug auf das Verhalten des Pufferaustauschs. Wenn Windowedauf TRUE festgelegt ist und SwapEffect auf D3DSWAPEFFECT_FLIP festgelegt ist, erstellt die Runtime daher einen zusätzlichen Hintergrundpuffer und kopiert den wert, der zur Präsentationszeit zum Frontpuffer wird.
D3DSWAPEFFECT_COPY erfordert, dass BackBufferCount auf 1 festgelegt ist.
D3DSWAPEFFECT_DISCARD wird in der Debugruntime erzwungen, indem ein beliebiger Puffer nach der Darstellung mit Rauschen gefüllt wird.
Unterschiede zwischen Direct3D9 und Direct3D9Ex:
- In Direct3D9Ex wird D3DSWAPEFFECT_FLIPEX hinzugefügt, um anzugeben, wann eine Anwendung den Flip-Modus verwendet. Das heißt, der Rahmen einer Anwendung wird im Fenstermodus (anstatt kopiert) an den Desktopfenster-Manager (DWM) für die Komposition übergeben. Der Flip-Modus bietet eine effizientere Speicherbandbreite und ermöglicht es einer Anwendung, die Vorteile von Vollbildstatistiken zu nutzen. Das Vollbildverhalten wird dadurch nicht geändert. Das Flip-Modus-Verhalten 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 Backpuffers während der Präsentation in den vorderen Puffer kopiert wird.
Bei einer Vollbildanwendung ist dies ein Handle zum oberen Fenster (das ist 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.
Für eine Anwendung im Fenstermodus ist dieses Handle das Standardzielfenster für Present. Wenn dieses Handle NULL ist, wird das Fokusfenster übernommen.
Beachten Sie, dass von der Runtime 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 der Fensterposition.
-
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 bei der Erstellung 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 aufgezählten D3DFORMAT-Typs . Das Format der automatischen Tiefenschablonenoberfläche, die vom Gerät erstellt wird. 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 die Grafikkarte den Bildschirm aktualisiert. Der Wert hängt vom Modus ab, in dem die Anwendung ausgeführt wird:
- Im Fenstermodus muss die Aktualisierungsrate 0 betragen.
- Im Vollbildmodus ist die Aktualisierungsrate eine der Von EnumAdapterModes zurückgegebenen Aktualisierungsraten.
-
PresentationInterval
-
Typ: UINT
-
Die maximale Rate, mit der die Backpuffer der Swapchain 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 |
|
Siehe auch