Поделиться через


Создание устройства (Direct3D 9)

Чтобы создать устройство Direct3D, сначала создайте объект Direct3D (см. Direct3DCreate9). Все устройства отрисовки, созданные объектом Direct3D, используют одни и те же физические ресурсы. При создании нескольких устройств отрисовки из одного объекта Direct3D будет наблюдаться значительное снижение производительности, так как они разделяют одно и то же оборудование.

Во-первых, инициализировать значения для структуры D3DPRESENT_PARAMETERS, используемой для создания устройства Direct3D. В следующем примере кода указывается окно приложения, в котором резервный буфер копируется в передний буфер только во время операции вертикальной синхронизации.

LPDIRECT3DDEVICE9 d3dDevice = NULL;

D3DPRESENT_PARAMETERS d3dpp; 

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

Затем создайте устройство Direct3D. Следующий вызов IDirect3D9::CreateDevice указывает адаптер по умолчанию, устройство уровня абстракции оборудования (HAL) и обработку вершин программного обеспечения.

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

Обратите внимание, что вызов создания, освобождения или сброса устройства должен выполняться только в том потоке, который используется процедурой окна окна с фокусом.

После создания устройства задайте его состояние.

Устройства Direct3D