如何:建立裝置和立即內容
本主題說明如何初始化 裝置。 初始化 裝置 是應用程式在轉譯場景之前必須先完成的第一個工作之一。
建立裝置和立即內容
使用緩衝區格式和維度的相關信息填入 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;
使用步驟一中的 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;
}
注意
如果您在只有 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++ |
---|
|