<b></b>

Device Context可以被用于任何線程中,但一次隻能在一個線程中使用。
<b>建立WARP</b><b>和Reference</b><b>裝置的限制:</b>
(1)在D3D 11中
D3D_DRIVER_TYPE_WARP支援feature level從D3D_FEATURE_LEVEL_9_1
through D3D_FEATURE_LEVEL_10_1。
D3D_DRIVER_TYPE_REFERENCE支援所有的feature level。
11 device時,可以并且隻能使用上面的任意一種組合。
(2)在D3D 10.1中
D3D10_DRIVER_TYPE_WARP和D3D10_DRIVER_TYPE_REFERENCE支援feture
level從D3D10_FEATURE_LEVEL_10_0到D3D10_FEATURE_LEVEL_10_1
10.1 device時,可以并且隻能使用上面的任意一種組合。
<b>Swap</b>
Chain<b>(交換鍊)</b>
一個swap chain包含2個或多個buffers,用來render和display。它通常包含一個front buffer用來送出到顯示裝置,和一個back buffer用來作為render target。在immediate context完成render到後緩存後,swap chain并通過交換2個緩存來送出back buffer。
Swap chain包含了幾個渲染特征:
render區域的大小、display重新整理率、display模式、surface格式
通過填充一個DXGI_SWAP_CHAIN_DESC結構來定義swap chain的上述特征。如:
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;
建立Device和Swap Chain:
<b>枚舉GPU</b><b>裝置</b>
DX10、DX11使用DXGI枚舉一台機器上可獲得的圖形擴充卡。枚舉圖形裝置可以做以下事情:
(1)
檢視機器上安裝了多少顯示卡
(2)
可以幫助你選擇特定的顯示卡來建立D3D裝置
(3)
<b>枚舉過程:</b>
(1)
IDXGIFactory * pFactory = NULL;
CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
<code>(2) </code>通過IDXGIFactory::EnumAdapters函數查詢每個裝置<code></code>
for (UINT i = 0;
pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND;
++i)
{ ... }
(3)
調用IDXGIAdapter::EnumOutputs枚舉圖形裝置的輸出對象裝置
IDXGIOutput* pOutput = NULL;
HRESULT hr;
//枚舉pAdapter的主輸出對象(顯示器)
hr = pAdapter->EnumOutputs(0,&pOutput);
(4)
UINT numModes = 0;
DXGI_MODE_DESC* displayModes = NULL;
DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT;
// Get the number of elements
hr = pOutput->GetDisplayModeList( format, 0, &numModes, NULL);
displayModes = new DXGI_MODE_DESC[numModes];
// Get the list
hr = pOutput->GetDisplayModeList( format, 0, &numModes, displayModes);
<b> </b>
PS:cnblogs的文檔編輯敢不敢再強大一點,至少從word中複制的大括号可以粘貼上吧,畢竟圖檔效果不好。