Dela via


Skapa en enhet (Direct3D 9)

Skapa en Direct3D-enhet genom att först skapa ett Direct3D-objekt (se Direct3DCreate9). Alla renderingsenheter som skapats av ett Direct3D-objekt delar samma fysiska resurser. Om du skapar flera renderingsenheter från ett enda Direct3D-objekt uppstår extrema prestandapåföljder eftersom de delar samma maskinvara.

Initiera först värden för den D3DPRESENT_PARAMETERS struktur som används för att skapa Direct3D-enheten. I följande kodexempel anges ett fönsterprogram där bufferten på baksidan kopieras till den främre bufferten endast under en vertikal synkroniseringsåtgärd.

LPDIRECT3DDEVICE9 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

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

Skapa sedan Direct3D-enheten. Följande IDirect3D9::CreateDevice-anrop anger standardadapter, en enhet för hårdvaruavbildningslager (HAL) och programvaruvertexbehandling.

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

Observera att ett anrop för att skapa, släppa eller återställa enheten endast ska ske i samma tråd som fönsterproceduren i fokusfönstret.

När du har skapat enheten anger du dess tillstånd.

Direct3D-enheter