如何:创建引用设备(五)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyafang123/article/details/89497459

引用设备实现运行时的高度精确的软件实现。要创建引用设备,只需指定正在创建的设备将使用引用驱动程序。这个例子同时创建了一个设备和一个交换链。

创建引用设备

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

    你将需要提供D3D_DRIVER_TYPE枚举类型的引用驱动类型给API调用,方法调用成功以后,它将返回一个交换链接口,设备接口,一个指向驱动程序授予的特性级别的指针,一个实时设备上下文。

猜你喜欢

转载自blog.csdn.net/xiaoyafang123/article/details/89497459
今日推荐