Création d’un appareil (Direct3D 9)

Pour créer un appareil Direct3D, commencez par créer un objet Direct3D (consultez Direct3DCreate9). Tous les appareils de rendu créés par un objet Direct3D partagent les mêmes ressources physiques. Si vous créez plusieurs appareils de rendu à partir d’un seul objet Direct3D, des pénalités de performances extrêmes seront encourues, car elles partagent le même matériel.

Tout d’abord, initialisez les valeurs de la structure D3DPRESENT_PARAMETERS utilisée pour créer l’appareil Direct3D. L’exemple de code suivant spécifie une application fenêtré où la mémoire tampon arrière est copiée dans la mémoire tampon avant pendant une opération de synchronisation verticale uniquement.

LPDIRECT3DDEVICE9 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

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

Ensuite, créez l’appareil Direct3D. L’appel IDirect3D9::CreateDevice suivant spécifie l’adaptateur par défaut, un appareil de couche d’abstraction matérielle (HAL) et le traitement du vertex logiciel.

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

Notez qu’un appel à la création, à la mise en production ou à la réinitialisation de l’appareil doit se produire uniquement sur le même thread que la procédure de fenêtre de la fenêtre de focus.

Après avoir créé l’appareil, définissez son état.

Appareils Direct3D