Como criar um dispositivo e um contexto imediato
Este tópico mostra como inicializar um dispositivo. Inicializar um dispositivo é uma das primeiras tarefas que seu aplicativo deve concluir antes que você possa renderizar sua cena.
Para criar um dispositivo e um contexto imediato
Preencha a estrutura DXGI_SWAP_CHAIN_DESC com informações sobre formatos e dimensões de buffer. Para obter mais informações, consulte Criando uma cadeia de troca.
O exemplo de código a seguir demonstra como preencher a estrutura 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;
Usando a estrutura DXGI_SWAP_CHAIN_DESC da primeira etapa, chame D3D11CreateDeviceAndSwapChain para inicializar o dispositivo e trocar a cadeia ao mesmo tempo.
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;
}
Observação
Se você solicitar um dispositivo D3D_FEATURE_LEVEL_11_1 em um computador com apenas o runtime do Direct3D 11.0, D3D11CreateDeviceAndSwapChain sairá imediatamente com E_INVALIDARG. Para solicitar com segurança todos os níveis de recursos possíveis em um computador com o runtime do DirectX 11.0 ou DirectX 11.1, use este código:
|
Crie uma exibição de destino de renderização chamando ID3D11Device::CreateRenderTargetView e associe o back-buffer como um destino de renderização chamando ID3D11DeviceContext::OMSetRenderTargets.
|
Crie um visor para definir quais partes do destino de renderização ficarão visíveis. Defina o visor usando a estrutura D3D11_VIEWPORT e defina o visor usando o método ID3D11DeviceContext::RSSetViewports .
C++ |
---|
|