Share via


Scissor Test (Direct3D 9)

Scissor 測試剪刀矩形外部的剪下圖元,這是轉譯目標的使用者定義矩形子區段。

Scissor 矩形可用來指出繪製遊戲世界之轉譯目標的區域。 矩形外部的區域會加以擷取,而且可能致力於遊戲的 GUI。 剪刀測試無法將非矩形區域 Cull。

Scissor 矩形無法設定大於轉譯目標,但可以設定大於檢視區。

剪刀矩形是由裝置轉譯狀態所管理。 將轉譯日期設定為 TRUEFALSE,以啟用或停用剪刀測試。 此測試會在計算片段色彩之後執行,但在 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;

預設的剪下矩形是完整的檢視區。

剪刀測試會在圖元著色器或固定函式管線完成圖元處理之後完成,如下圖所示。

相對於其他步驟執行剪刀測試時的圖表

圖元管線