방법: 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. 애플리케이션에 필요한 기능을 구현하는 기능 수준을 요청합니다. D3D_FEATURE_LEVEL_10_1 통해 모든 기능 수준에 대한 Windows 8 시작하여 D3D_FEATURE_LEVEL_9_1 기능 수준에 대한 WARP 디바이스를 성공적으로 만들 수 있습니다.

        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;
    }

D3D_DRIVER_TYPE 열거형에서 WARP 드라이버 형식으로 API 호출을 제공해야 합니다. 메서드가 성공하면 스왑 체인 인터페이스, 디바이스 인터페이스, 드라이버에서 부여한 기능 수준에 대한 포인터 및 즉각적인 컨텍스트 인터페이스를 반환합니다.

특정 기능 수준에서 WARP 디바이스를 만드는 제한 사항에 대한 자세한 내용은 WARP 및 참조 디바이스 만들기 제한 사항을 참조하세요.

Windows 8 대한 새로운 기능

컴퓨터의 기본 디스플레이 어댑터가 "Microsoft 기본 디스플레이 어댑터"(WARP 어댑터)인 경우 해당 컴퓨터에는 두 번째 어댑터도 있습니다. 이 두 번째 어댑터는 디스플레이 출력이 없는 렌더링 전용 디바이스입니다. 렌더링 전용 디바이스에 대한 자세한 내용은 어댑터 열거에 대한 Windows 8 새 정보를 참조하세요.

디바이스

Direct3D 11을 사용하는 방법