Практическое руководство. Создание устройства и контекста интерпретации
В этом разделе показано, как инициализировать устройство. Инициализация устройства — это одна из первых задач, которые приложение должно выполнить, прежде чем вы сможете отобразить сцену.
Создание устройства и немедленного контекста
Заполните структуру 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;
Используя структуру 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;
}
Примечание.
Если вы запрашиваете устройство D3D_FEATURE_LEVEL_11_1 на компьютере только с средой выполнения Direct3D 11.0, D3D11CreateDeviceAndSwapChain немедленно завершает работу с E_INVALIDARG. Чтобы безопасно запросить все возможные уровни компонентов на компьютере с помощью среды выполнения DirectX 11.0 или DirectX 11.1, используйте следующий код:
|
Создайте представление целевого объекта отрисовки путем вызова ID3D11Device::CreateRenderTargetView и привязав обратный буфер в качестве целевого объекта отрисовки путем вызова ID3D11DeviceContext::OMSetRenderTargets.
|
Создайте окно просмотра, чтобы определить, какие части целевого объекта отрисовки будут видимыми. Определите окно просмотра с помощью структуры D3D11_VIEWPORT и задайте окно просмотра с помощью метода ID3D11DeviceContext::RSSetViewports.
C++ |
---|
|