(Direct3D 9) 创建设备

若要创建 Direct3D 设备,请先创建 Direct3D 对象 (请参阅 Direct3DCreate9) 。 由 Direct3D 对象创建的所有呈现设备共享相同的物理资源。 如果从单个 Direct3D 对象创建多个渲染设备,将产生极端的性能损失,因为它们共享相同的硬件。

首先,初始化用于创建 Direct3D 设备的 D3DPRESENT_PARAMETERS 结构的值。 下面的代码示例指定一个窗口化应用程序,其中后台缓冲区仅在垂直同步操作期间复制到前缓冲区。

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 设备