Criando um dispositivo (Direct3D 9)

Para criar um dispositivo Direct3D, primeiro crie um objeto Direct3D (consulte Direct3DCreate9). Todos os dispositivos de renderização criados por um objeto Direct3D compartilham os mesmos recursos físicos. Se você criar vários dispositivos de renderização de um único objeto Direct3D, serão aplicadas penalidades extremas de desempenho porque compartilham o mesmo hardware.

Primeiro, inicialize valores para a estrutura D3DPRESENT_PARAMETERS usada para criar o dispositivo Direct3D. O exemplo de código a seguir especifica um aplicativo em janelas em que o buffer de fundo é copiado para o buffer frontal somente durante uma operação de sincronização vertical.

LPDIRECT3DDEVICE9 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

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

Em seguida, crie o dispositivo Direct3D. A chamada IDirect3D9::CreateDevice a seguir especifica o adaptador padrão, um dispositivo HAL (camada de abstração de hardware) e o processamento de vértice de software.

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

Observe que uma chamada para criar, liberar ou redefinir o dispositivo deve ocorrer apenas no mesmo thread que o procedimento de janela da janela de foco.

Depois de criar o dispositivo, defina seu estado.

Dispositivos Direct3D