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:

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
D3D9Types.h

Siehe auch

Direct3D-Strukturen

CreateDevice

CreateAdditionalSwapChain

Anwesend

Reset