IDirect3D9::CreateDevice-Methode (d3d9.h)

Erstellt ein Gerät, das die Grafikkarte darstellt.

Syntax

HRESULT CreateDevice(
  [in]          UINT                  Adapter,
  [in]          D3DDEVTYPE            DeviceType,
  [in]          HWND                  hFocusWindow,
  [in]          DWORD                 BehaviorFlags,
  [in, out]     D3DPRESENT_PARAMETERS *pPresentationParameters,
  [out, retval] IDirect3DDevice9      **ppReturnedDeviceInterface
);

Parameter

[in] Adapter

Typ: UINT

Ordnungszahl, die die Grafikkarte angibt. D3DADAPTER_DEFAULT ist immer der primäre Grafikkarte.

[in] DeviceType

Typ: D3DDEVTYPE

Member des D3DDEVTYPE aufgezählten Typs, der den gewünschten Gerätetyp angibt. Wenn der gewünschte Gerätetyp nicht verfügbar ist, schlägt die Methode fehl.

[in] hFocusWindow

Typ: HWND

Das Fokusfenster benachrichtigt Direct3D, wenn eine Anwendung vom Vordergrundmodus in den Hintergrundmodus wechselt. Siehe Hinweise.

  • Für den Vollbildmodus muss das angegebene Fenster ein Fenster der obersten Ebene sein.
  • Im Fenstermodus kann dieser Parameter nur NULL sein, wenn das hDeviceWindow-Element von pPresentationParameters auf einen gültigen Wert ungleich NULL festgelegt ist.

[in] BehaviorFlags

Typ: DWORD

Kombination aus einer oder mehreren Optionen, die die Geräteerstellung steuern. Weitere Informationen finden Sie unter D3DCREATE.

[in, out] pPresentationParameters

Typ: D3DPRESENT_PARAMETERS*

Zeiger auf eine D3DPRESENT_PARAMETERS-Struktur , in der die Präsentationsparameter für das zu erstellende Gerät beschrieben werden. Wenn BehaviorFlags D3DCREATE_ADAPTERGROUP_DEVICE angibt, ist pPresentationParameters ein Array. Unabhängig von der Anzahl vorhandener Köpfe wird automatisch nur eine Tiefen-/Schablonenoberfläche erstellt.

Für Windows 2000 und Windows XP wird die Aktualisierungsrate der Vollbildanzeige des Geräts in der folgenden Reihenfolge festgelegt:

  1. Der vom Benutzer angegebene Registrierungsschlüssel ForcedRefreshRate ungleich null, sofern vom Gerät unterstützt.
  2. Anwendungsspezifischer Aktualisierungsrateswert ungleich 0 im Presentation-Parameter.
  3. Aktualisierungsrate des neuesten Desktops, sofern vom Gerät unterstützt.
  4. 75 Hertz, wenn vom Gerät unterstützt.
  5. 60 Hertz, wenn vom Gerät unterstützt.
  6. Gerätestandard.
Eine nicht unterstützte Aktualisierungsrate wird standardmäßig auf die am nächstenste unterstützte Aktualisierungsrate unterhalb der Aktualisierungsrate festgelegt. Wenn die Anwendung beispielsweise 63 Hertz angibt, werden 60 Hertz verwendet. Es gibt keine unterstützten Aktualisierungsraten unter 57 Hertz.

pPresentationParameters ist sowohl ein Eingabe- als auch ein Ausgabeparameter. Das Aufrufen dieser Methode kann mehrere Member ändern, darunter:

  • Wenn BackBufferCount, BackBufferWidth und BackBufferHeight vor dem Aufruf der Methode 0 sind, werden sie geändert, wenn die Methode zurückgegeben wird.
  • Wenn BackBufferFormat gleich D3DFMT_UNKNOWN ist, bevor die Methode aufgerufen wird, wird es geändert, wenn die Methode zurückgegeben wird.

[out, retval] ppReturnedDeviceInterface

Typ: IDirect3DDevice9**

Adresse eines Zeigers auf die zurückgegebene IDirect3DDevice9-Schnittstelle , die das erstellte Gerät darstellt.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert einer der folgenden Sein: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE D3DERR_OUTOFVIDEOMEMORY.

Hinweise

Diese Methode gibt eine vollständig funktionierende Geräteschnittstelle zurück, die auf den erforderlichen Anzeigemodus (oder fensterweise) festgelegt und den entsprechenden Hintergrundpuffern zugeordnet ist. Um mit dem Rendern zu beginnen, muss die Anwendung nur einen Tiefenpuffer erstellen und festlegen (vorausgesetzt, EnableAutoDepthStencil ist in D3DPRESENT_PARAMETERSFALSE).

Wenn Sie ein Direct3D-Gerät erstellen, geben Sie zwei verschiedene Fensterparameter an: ein Fokusfenster (hFocusWindow) und ein Gerätefenster (hDeviceWindow in D3DPRESENT_PARAMETERS). Der Zweck jedes Fensters ist:

  • Das Fokusfenster benachrichtigt Direct3D, wenn eine Anwendung vom Vordergrundmodus in den Hintergrundmodus wechselt (über ALT-Tab, einen Mausklick oder eine andere Methode). Ein einzelnes Fokusfenster wird von jedem Gerät freigegeben, das von einer Anwendung erstellt wurde.
  • 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.
Diese Methode sollte während der Verarbeitung von WM_CREATE nicht ausgeführt werden. Eine Anwendung sollte während der Verarbeitung von WM_CREATE niemals ein Fensterhandle an Direct3D übergeben. Jeder Aufruf zum Erstellen, Freigeben oder Zurücksetzen des Geräts muss mit demselben Thread wie die Fensterprozedur des Fokusfensters erfolgen.

Beachten Sie, dass D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING und D3DCREATE_SOFTWARE_VERTEXPROCESSING sich gegenseitig ausschließen, und mindestens eines dieser Vertexverarbeitungsflags beim Aufrufen dieser Methode angegeben werden muss.

Zurückpuffer, die als Teil des Geräts erstellt werden, können nur gesperrt werden, wenn D3DPRESENTFLAG_LOCKABLE_BACKBUFFER in den Präsentationsparametern angegeben ist. (Mehrfachsampling-Rückpuffer und Tiefenoberflächen können nie gesperrt werden.)

Die Methoden Reset, IUnknown und TestCooperativeLevel müssen aus demselben Thread aufgerufen werden, der diese Methode zum Erstellen eines Geräts verwendet hat.

D3DFMT_UNKNOWN kann beim Aufrufen von CreateDevice, Reset und CreateAdditionalSwapChain für das Back-Pufferformat im Fenstermodus angegeben werden. Dies bedeutet, dass die Anwendung das aktuelle Desktopformat nicht abfragen muss, bevor CreateDevice für den Fenstermodus aufgerufen wird. Für den Vollbildmodus muss das Hintergrundpufferformat angegeben werden.

Wenn Sie versuchen, ein Gerät in einem fenster mit 0x0 Größe zu erstellen, schlägt CreateDevice fehl.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

D3DDEVICE_CREATION_PARAMETERS

Direct3DErstellen9

IDirect3D9

Multihead (Direct3D 9)

Zurücksetzen