Практическое руководство. Создание устройства WARP

В этом разделе показано, как создать устройство WARP, реализующее высокоскоростной программный растеризатор. Чтобы создать устройство WARP, просто укажите, что создаваемое устройство будет использовать драйвер WARP. В этом примере одновременно создается устройство и цепочка буферов.

Создание устройства WARP

  1. Определите начальные параметры для цепочки буферов.

        DXGI_SWAP_CHAIN_DESC sd;
        ZeroMemory( &sd, sizeof( sd ) );
        sd.BufferCount = 1;
        sd.BufferDesc.Width = 640;
        sd.BufferDesc.Height = 480;
        sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
        sd.BufferDesc.RefreshRate.Numerator = 60;
        sd.BufferDesc.RefreshRate.Denominator = 1;
        sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
        sd.OutputWindow = g_hWnd;
        sd.SampleDesc.Count = 1;
        sd.SampleDesc.Quality = 0;
        sd.Windowed = TRUE;
    
  2. Запросите уровень компонентов, реализующий функции, необходимые приложению. Устройство WARP можно успешно создать для уровней компонентов, D3D_FEATURE_LEVEL_9_1D3D_FEATURE_LEVEL_10_1 и начиная с Windows 8 для всех уровней компонентов.

        D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_10_1;
    

    Дополнительные сведения об уровнях функций см. в перечислении D3D_FEATURE_LEVEL .

  3. Создайте устройство, вызвав D3D11CreateDeviceAndSwapChain.

    HRESULT hr = S_OK;
    if( FAILED (hr = D3D11CreateDeviceAndSwapChain( NULL, 
                    D3D_DRIVER_TYPE_WARP,
                    NULL, 
                    0,
                    &FeatureLevels, 
                    1, 
                    D3D11_SDK_VERSION, 
                    &sd, 
                    &g_pSwapChain, 
                    &g_pd3dDevice, 
                    &FeatureLevel,
                    &g_pImmediateContext )))
    {
        return hr;
    }

Необходимо предоставить вызов API с типом драйвера WARP из перечисления D3D_DRIVER_TYPE . После успешного выполнения метода он вернет интерфейс цепочки буферов, интерфейс устройства, указатель на уровень компонентов, предоставленный драйвером, и непосредственный контекстный интерфейс.

Сведения об ограничениях создания устройства WARP на определенных уровнях функций см. в разделах Ограничения Создание WARP и Эталонные устройства.

Новые возможности для Windows 8

Если основным видеоадаптером компьютера является "Microsoft Basic Display Adapter" (АДАПТЕР WARP), этот компьютер также имеет второй адаптер. Этот второй адаптер является устройством только для отрисовки, которое не имеет выходных данных для отображения. Дополнительные сведения об устройстве, доступном только для отрисовки, см. в новых сведениях в Windows 8 о перечислении адаптеров.

Устройства

Использование Direct3D 11