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


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

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

Создание эталонного устройства

  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. Запросите уровень функций, который реализует функции, необходимые приложению. Для среды выполнения Direct3D 11 можно успешно создать эталонное устройство.

        D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_11_0;
    

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

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

    HRESULT hr = S_OK;
    D3D_FEATURE_LEVEL FeatureLevel;

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

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

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

Устройства

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