版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyafang123/article/details/89497459
引用设备实现运行时的高度精确的软件实现。要创建引用设备,只需指定正在创建的设备将使用引用驱动程序。这个例子同时创建了一个设备和一个交换链。
创建引用设备
- 定义并初始化交换链变量。
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;
- 请求实现应用程序所需功能的功能级别。可以为Direct3D 11运行时成功创建一个引用设备。
D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_11_0;
-
通过调用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调用,方法调用成功以后,它将返回一个交换链接口,设备接口,一个指向驱动程序授予的特性级别的指针,一个实时设备上下文。