Vorgehensweise: Erstellen eines Geräts und eines unmittelbaren Kontexts
In diesem Thema wird gezeigt, wie Ein Gerät initialisiert wird. Das Initialisieren eines Geräts ist eine der ersten Aufgaben, die Ihre Anwendung ausführen muss, bevor Sie Ihre Szene rendern können.
So erstellen Sie ein Gerät und einen unmittelbaren Kontext
Füllen Sie die DXGI_SWAP_CHAIN_DESC-Struktur mit Informationen zu Pufferformaten und -dimensionen aus. Weitere Informationen finden Sie unter Erstellen einer Swap Chain.
Im folgenden Codebeispiel wird veranschaulicht, wie die DXGI_SWAP_CHAIN_DESC-Struktur ausgefüllt wird.
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;
Rufen Sie mithilfe der DXGI_SWAP_CHAIN_DESC-Struktur aus Schritt 1 D3D11CreateDeviceAndSwapChain auf, um das Gerät und die Swapchain gleichzeitig zu initialisieren.
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;
}
Hinweis
Wenn Sie ein D3D_FEATURE_LEVEL_11_1 Gerät auf einem Computer anfordern, auf dem nur die Direct3D 11.0-Runtime verwendet wird, wird D3D11CreateDeviceAndSwapChain sofort mit E_INVALIDARG beendet. Verwenden Sie den folgenden Code, um alle möglichen Featureebenen auf einem Computer mit der DirectX 11.0- oder DirectX 11.1-Runtime sicher anzufordern:
|
Erstellen Sie eine Renderzielansicht, indem Sie ID3D11Device::CreateRenderTargetView aufrufen, und binden Sie den Backpuffer als Renderziel, indem Sie ID3D11DeviceContext::OMSetRenderTargets aufrufen.
|
Erstellen Sie einen Viewport, um zu definieren, welche Teile des Renderziels sichtbar sind. Definieren Sie den Viewport mithilfe der D3D11_VIEWPORT-Struktur , und legen Sie den Viewport mithilfe der ID3D11DeviceContext::RSSetViewports-Methode fest.
C++ |
---|
|