IDirect3D9::CreateDevice-Methode (d3d9.h)
Erstellt ein Gerät, das die Grafikkarte darstellt.
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
[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:
- Der vom Benutzer angegebene Registrierungsschlüssel ForcedRefreshRate ungleich null, sofern vom Gerät unterstützt.
- Anwendungsspezifischer Aktualisierungsrateswert ungleich 0 im Presentation-Parameter.
- Aktualisierungsrate des neuesten Desktops, sofern vom Gerät unterstützt.
- 75 Hertz, wenn vom Gerät unterstützt.
- 60 Hertz, wenn vom Gerät unterstützt.
- Gerätestandard.
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.
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.
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.
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.
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d9.h (einschließlich D3D9.h) |
Bibliothek | D3D9.lib |