如何:创建设备和即时上下文
本主题演示如何初始化 设备。 初始化 设备 是应用程序在渲染场景之前必须完成的首批任务之一。
创建设备和即时上下文
使用有关缓冲区格式和维度的信息填写 DXGI_SWAP_CHAIN_DESC 结构。 有关详细信息,请参阅创建交换链。
下面的代码示例演示如何填充 DXGI_SWAP_CHAIN_DESC 结构。
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;
使用步骤 1 中的 DXGI_SWAP_CHAIN_DESC 结构,调用 D3D11CreateDeviceAndSwapChain 以同时初始化设备和交换链。
D3D_FEATURE_LEVEL FeatureLevelsRequested = D3D_FEATURE_LEVEL_11_0;
UINT numLevelsRequested = 1;
D3D_FEATURE_LEVEL FeatureLevelsSupported;
if( FAILED (hr = D3D11CreateDeviceAndSwapChain( NULL,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
0,
&FeatureLevelsRequested,
numFeatureLevelsRequested,
D3D11_SDK_VERSION,
&sd,
&g_pSwapChain,
&g_pd3dDevice,
&FeatureLevelsSupported,
&g_pImmediateContext )))
{
return hr;
}
注意
如果在仅使用 Direct3D 11.0 运行时的计算机上请求 D3D_FEATURE_LEVEL_11_1 设备, 则 D3D11CreateDeviceAndSwapChain 会立即退出 并E_INVALIDARG。 若要在具有 DirectX 11.0 或 DirectX 11.1 运行时的计算机上安全地请求所有可能的功能级别,请使用以下代码:
|
通过调用 ID3D11Device::CreateRenderTargetView 创建呈现目标视图,并通过调用 ID3D11DeviceContext::OMSetRenderTargets 将后台缓冲区作为呈现目标绑定。
|
创建视区以定义呈现目标的哪些部分将可见。 使用 D3D11_VIEWPORT 结构定义视区,并使用 ID3D11DeviceContext::RSSetViewports 方法设置视区。
C++ |
---|
|