Procedura: Creare un dispositivo e un contesto immediato
In questo argomento viene illustrato come inizializzare un dispositivo. L'inizializzazione di un dispositivo è una delle prime attività che l'applicazione deve completare prima di poter eseguire il rendering della scena.
Per creare un dispositivo e un contesto immediato
Compilare la struttura DXGI_SWAP_CHAIN_DESC con informazioni sui formati e le dimensioni del buffer. Per altre informazioni, vedere Creazione di una catena di scambio.
Nell'esempio di codice seguente viene illustrato come compilare la struttura 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 la struttura DXGI_SWAP_CHAIN_DESC dal passaggio 1, chiamare D3D11CreateDeviceAndSwapChain per inizializzare il dispositivo e la catena di scambio contemporaneamente.
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;
}
Nota
Se si richiede un dispositivo D3D_FEATURE_LEVEL_11_1 in un computer con solo il runtime Direct3D 11.0, D3D11CreateDeviceAndSwapChain viene immediatamente chiuso con E_INVALIDARG. Per richiedere in modo sicuro tutti i livelli di funzionalità possibili in un computer con il runtime DirectX 11.0 o DirectX 11.1, usare questo codice:
|
Creare una visualizzazione di destinazione di rendering chiamando ID3D11Device::CreateRenderTargetView e associando il buffer nascosto come destinazione di rendering chiamando ID3D11DeviceContext::OMSetRenderTargets.
|
Creare un riquadro di visualizzazione per definire quali parti della destinazione di rendering saranno visibili. Definire il riquadro di visualizzazione usando la struttura D3D11_VIEWPORT e impostare il riquadro di visualizzazione usando il metodo ID3D11DeviceContext::RSSetViewports.
C++ |
---|
|