Dela via


Saxtest (Direct3D 9)

Saxtestet gallrar pixlar som ligger utanför saxrektangeln, ett användardefinierat rektangulärt delavsnitt av återgivningsmålet.

Saxrektangeln kan användas för att ange området för återgivningsmålet där spelvärlden ritas. Området utanför rektangeln gallras och kan ägnas åt ett spels GUI. Saxtestet kan inte gallra icke-rektangulära områden.

Scissor-rektanglar kan inte anges som större än återgivningsmålet, men de kan anges som större än visningsporten.

Saxrektangeln hanteras av ett återgivningstillstånd för enheten. Ett saxtest aktiveras eller inaktiveras genom att ange renderstate till TRUE eller FALSE. Det här testet utförs efter att fragmentfärgen har beräknats men före alfatestning. IDirect3DDevice9::SetRenderTarget återställer saxrektangeln till det fullständiga återgivningsmålet, vilket motsvarar återställningen av visningsporten. IDirect3DDevice9::SetScissorRect registreras av stateblocks och IDirect3DDevice9::CreateStateBlock med inställningen alla tillstånd (D3DSBT_ALL värde i D3DSTATEBLOCKTYPE). Scissor-testet påverkar även enheten IDirect3DDevice9::Clear operation.

// 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;

Standardrektangeln för sax är den fullständiga visningsplatsen.

Scissor-testning görs precis efter att pixelbearbetningen har slutförts av en pixelskuggare eller pipelinen för fast funktion, som du ser i följande diagram.

diagram över när saxtestning utförs i förhållande till andra steg

Pixel Pipeline