方法: デバイスとイミディエイト コンテキストを作成する
このトピックでは、デバイスを初期化する方法について説明 します。 デバイスの初期化は、シーンをレンダリングする前にアプリケーションが完了する必要がある最初のタスクの 1 つです。
デバイスとイミディエイト コンテキストを作成するには
バッファーの形式とディメンションに関する情報を DXGI_SWAP_CHAIN_DESC 構造体に入力します。 詳細については、「スワップ チェーンの作成」を参照してください。
次のコード例では、 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;
手順 1 の DXGI_SWAP_CHAIN_DESC 構造体を使用して 、D3D11CreateDeviceAndSwapChain を呼び出して、デバイスとスワップ チェーンを同時に初期化します。
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;
}
Note
Direct3D 11.0 ランタイムのみを使用するコンピューターで D3D_FEATURE_LEVEL_11_1 デバイスを要求すると、 D3D11CreateDeviceAndSwapChain は E_INVALIDARGですぐに終了します。 DirectX 11.0 または DirectX 11.1 ランタイムを使用するコンピューターで考えられるすべての機能レベルを安全に要求するには、次のコードを使用します。
|
ID3D11Device::CreateRenderTargetView を呼び出してレンダー ターゲット ビューを作成し、ID3D11DeviceContext::OMSetRenderTargets を呼び出して、バックバッファーをレンダー ターゲットとしてバインドします。
|
ビューポートを作成して、レンダー ターゲットのどの部分を表示するかを定義します。 D3D11_VIEWPORT構造体を使用してビューポートを定義し、ID3D11DeviceContext::RSSetViewports メソッドを使用してビューポートを設定します。
C++ |
---|
|