PFND3D10DDI_SETVIEWPORTS回呼函式 (d3d10umddi.h)
SetViewports 函式會設定檢視區。
語法
PFND3D10DDI_SETVIEWPORTS Pfnd3d10ddiSetviewports;
void Pfnd3d10ddiSetviewports(
D3D10DDI_HDEVICE unnamedParam1,
[in] UINT NumViewports,
[in] UINT ClearViewports,
const D3D10_DDI_VIEWPORT *unnamedParam4
)
{...}
參數
unnamedParam1
hDevice [in]
顯示裝置的句柄(圖形內容)。
[in] NumViewports
pViewports 參數所指定的檢視區總數。
[in] ClearViewports
NumViewports 的檢視區數目之後的檢視區數目,指定要設定為 NULL。 此數位代表先前稱為 Microsoft SetViewports的 Direct3D 運行時間與新檢視區數目之間的差異。
請注意,ClearViewports 指定的數位只是優化輔助,因為使用者模式顯示驅動程式可以計算這個數位。
unnamedParam4
pViewports [in]
要設定之檢視區之 D3D10_DDI_VIEWPORT 結構的陣列。
傳回值
沒有
言論
驅動程式可以使用 pfnSetErrorCb 回呼函式來設定錯誤碼。
檢視區會將轉換后剪輯指定至輸出轉譯目標和深度樣板資源。 呼叫 setViewports 中未定義的任何檢視區都會設定為 NULL。 NULL 檢視區的定義如下。
struct D3D10_DDI_VIEWPORT {
FLOAT TopLeftX = NaN;
FLOAT TopLeftY = NaN;
FLOAT Width = NaN;
FLOAT Height = NaN;
FLOAT MinDepth = NaN;
FLOAT MaxDepth = NaN;
} D3D10_DDI_VIEWPORT;</pre>
此定義表示檢視區已關閉。
使用者模式顯示驅動程式必須以不可部分完成的方式將所有檢視區設定為一項作業。
雖然 NumViewports 參數會指定 pViewports 參數所指定數位中的檢視區數目,但陣列中的某些值可以 NULL。
NumViewports 數目之間的檢視區範圍,以及允許的檢視區數目上限,必須包含所有 NULL 或未系結值。 ClearViewports 參數指定的數位會通知驅動程式目前不可部分完成作業的檢視區數目。
如果先前呼叫 SetViewports 在 NumViewports 參數中傳遞值 2,且目前呼叫 setViewports 傳遞值 SetViewports 在 NumViewports中,SetViewports 目前的呼叫也會在 clearViewports 參數的 中傳遞 0 值。 如果下一次呼叫 SetViewports 傳遞 1 的值,NumViewports,後續呼叫也會在 ClearViewports 中傳遞值 3 (4 - 1)。
當使用者模式查詢作業期間要求清除檢視區的值時,此值是檢視區數目上限與檢視區值之間的差異。
SetViewports 可確保檢視區有效。 也就是說,SetViewports 可確保檢視區維度在範圍內(D3D10_VIEWPORT_BOUNDS_MIN、D3D10_VIEWPORT_BOUNDS_MAX、D3D10_MIN_DEPTH和D3D10_MAX_DEPTH)。 SetViewports 也可確保沒有座標為 NaN,並將反正規化浮點值排清為零。
除了D3DDDIERR_DEVICEREMOVED以外,驅動程式不應該發生任何錯誤。 因此,如果驅動程式傳遞任何錯誤,除了 D3DDDIERR_DEVICEREMOVED 以外,在呼叫 pfnSetErrorCb 函式時,Microsoft Direct3D 運行時間會判斷錯誤很重要。 即使移除裝置,驅動程式也不需要傳回D3DDDIERR_DEVICEREMOVED;不過,如果裝置移除干擾了 SetViewports 的作業(通常不應該發生),驅動程式可以傳回D3DDDIERR_DEVICEREMOVED。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows作系統中使用。 |
目標平臺 | 桌面 |
標頭 | d3d10umddi.h (包括 D3d10umddi.h) |