Procédure : créer un appareil et un contexte immédiat
Cette rubrique montre comment initialiser un appareil. L’initialisation d’un appareil est l’une des premières tâches que votre application doit effectuer avant de pouvoir afficher votre scène.
Pour créer un appareil et un contexte immédiat
Renseignez la structure DXGI_SWAP_CHAIN_DESC avec des informations sur les formats et les dimensions de la mémoire tampon. Pour plus d’informations, consultez Création d’une chaîne d’échange.
L’exemple de code suivant montre comment remplir la structure 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;
À l’aide de la structure DXGI_SWAP_CHAIN_DESC de l’étape 1, appelez D3D11CreateDeviceAndSwapChain pour initialiser l’appareil et permuter la chaîne en même temps.
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;
}
Notes
Si vous demandez un appareil D3D_FEATURE_LEVEL_11_1 sur un ordinateur avec uniquement le runtime Direct3D 11.0, D3D11CreateDeviceAndSwapChain se ferme immédiatement avec E_INVALIDARG. Pour demander en toute sécurité tous les niveaux de fonctionnalités possibles sur un ordinateur avec le runtime DirectX 11.0 ou DirectX 11.1, utilisez ce code :
|
Créez une vue de cible de rendu en appelant ID3D11Device::CreateRenderTargetView et liez l’arrière-mémoire tampon en tant que cible de rendu en appelant ID3D11DeviceContext::OMSetRenderTargets.
|
Créez une fenêtre d’affichage pour définir les parties de la cible de rendu qui seront visibles. Définissez la fenêtre d’affichage à l’aide de la structure D3D11_VIEWPORT et définissez la fenêtre d’affichage à l’aide de la méthode ID3D11DeviceContext::RSSetViewports .
C++ |
---|
|