Erstellen eines Geräts (Direct3D 9)

Um ein Direct3D-Gerät zu erstellen, erstellen Sie zuerst ein Direct3D-Objekt (siehe Direct3DCreate9). Alle Renderinggeräte, die von einem Direct3D-Objekt erstellt wurden, nutzen dieselben physischen Ressourcen. Wenn Sie mehrere Renderinggeräte aus einem einzelnen Direct3D-Objekt erstellen, fallen extreme Leistungseinbußen an, da sie dieselbe Hardware nutzen.

Initialisieren Sie zunächst Werte für die D3DPRESENT_PARAMETERS Struktur, die zum Erstellen des Direct3D-Geräts verwendet wird. Im folgenden Codebeispiel wird eine Anwendung mit Fenstern angegeben, bei der der Backpuffer nur während eines vertikalen Synchronisierungsvorgangs in den Frontpuffer kopiert wird.

LPDIRECT3DDEVICE9 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed   = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;

Erstellen Sie als Nächstes das Direct3D-Gerät. Der folgende IDirect3D9::CreateDevice-Aufruf gibt den Standardadapter, ein HAL-Gerät (Hardware Abstraction Layer) und die Softwarevertexverarbeitung an.

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                    D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                    &d3dpp, &d3dDevice ) ) )
    return E_FAIL;

Beachten Sie, dass ein Aufruf zum Erstellen, Freigeben oder Zurücksetzen des Geräts nur im selben Thread wie die Fensterprozedur des Fokusfensters erfolgen sollte.

Legen Sie nach dem Erstellen des Geräts den Zustand fest.

Direct3D-Geräte