How To: Erstellen eines Geräts und sofortigen Kontexts
In diesen Themen wird gezeigt, wie ein Gerät initialisiert wird. Die Initialisierung 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 Austauschkette.
Im folgenden Codebeispiel wird veranschaulicht, wie sie die DXGI _ SWAP CHAIN _ _ DESC-Struktur ausfüllen.
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 Austauschkette 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 nur mit der Direct3D 11.0-Runtime anfordern, wird D3D11CreateDeviceAndSwapChain sofort mit E _ INVALIDARG beendet. Um alle möglichen Featureebenen auf einem Computer mit der DirectX 11.0- oder DirectX 11.1-Runtime sicher an fordern zu können, verwenden Sie diesen Code:
|
Erstellen Sie eine Renderzielansicht, indem Sie ID3D11Device::CreateRenderTargetView aufrufen und den Backpuffer als Renderziel binden, indem Sie ID3D11DeviceContext::OMSetRenderTargets aufrufen.
|
Erstellen Sie einen Viewport, um zu definieren, welche Teile des Renderziels sichtbar sind. Definieren Sie den Viewport mithilfe der _ VIEWPORT-Struktur D3D11, und legen Sie den Viewport mithilfe der ID3D11DeviceContext::RSSetViewports-Methode fest.
| C++ |
|---|
|