本主题说明如何创建实现运行时的高度准确的软件实现的参考设备。要创建参考设备,只需指定要创建的设备将使用参考驱动程序。此示例同时创建设备和交换链。
创建参考设备
- 定义交换链的初始参数。
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;
在D3D_FEATURE_LEVEL枚举中查看有关功能级别的更多信息。
- 通过调用D3D11CreateDeviceAndSwapChain创建设备。
HRESULT hr=S_OK;
D3D_FEATURE_LEVEL FeatureLevel;
if(FAILED(hr=D3D11CreateDeviceAndSwapChain(nullptr,D3D_DRIVER_TYPE_REFERENCENULL,0,&FeatureLevels,1,D3D11_SDK_VERSION,&sd,&g_pSwapChain,&g_pd3dDevice,&FeatureLevel,&g_pImmediateContext))
return hr;
您需要使用D3D_DRIVER_TYPE枚举中的引用驱动程序类型提供API调用。方法成功后,它将返回交换链接口,设备接口,指向驱动程序授予的功能级别的指针以及直接上下文接口。
有关在某些功能级别上创建参考设备的限制的信息,请参阅限制创建WARP和参考设备。如何使用Direct3D 11
相关话题
设备