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 的檢視區數目之後的檢視區數目。 這個數位代表先前稱為 SetViewports () 和新檢視區數目時,Microsoft 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 的目前呼叫會在 NumViewports 中傳遞 4 的值,則目前的 SetViewports 呼叫也會在 ClearViewports 參數中傳遞 0 的值。 如果下一次呼叫 SetViewports 在 NumViewports 中傳遞 1 的值,後續呼叫也會在 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 (include D3d10umddi.h) |