Scissor Test (Direct3D 9)
Scissor 測試剪刀矩形外部的剪下圖元,這是轉譯目標的使用者定義矩形子區段。
Scissor 矩形可用來指出繪製遊戲世界之轉譯目標的區域。 矩形外部的區域會加以擷取,而且可能致力於遊戲的 GUI。 剪刀測試無法將非矩形區域 Cull。
Scissor 矩形無法設定大於轉譯目標,但可以設定大於檢視區。
剪刀矩形是由裝置轉譯狀態所管理。 將轉譯日期設定為 TRUE 或 FALSE,以啟用或停用剪刀測試。 此測試會在計算片段色彩之後執行,但在 Alpha 測試之前執行。 IDirect3DDevice9::SetRenderTarget 會將 scissor 矩形重設為完整轉譯目標,類似于檢視區重設。 IDirect3DDevice9::SetScissorRect 是由 stateblocks 記錄, 而 IDirect3DDevice9::CreateStateBlock 具有 D3DSTATEBLOCKTYPE 中所有狀態設定 (D3DSBT_ALL值) 。 Scissor 測試也會影響裝置 IDirect3DDevice9::Clear 作業。
// Methods
HRESULT IDirect3DDevice9::SetScissorRect(CONST RECT* pRect);
HRESULT IDirect3DDevice9::GetScissorRect(RECT* pRect);
// New RenderState, values are TRUE or FALSE
D3DRS_SCISSORTESTENABLE
// New hardware cap
D3D9CAPS.RasterCaps -> D3DPRASTERCAPS_SCISSORTEST;
預設的剪下矩形是完整的檢視區。
剪刀測試會在圖元著色器或固定函式管線完成圖元處理之後完成,如下圖所示。
相關主題