Condividi tramite


Test scissor (Direct3D 9)

Il test scissor verifica i pixel esterni al rettangolo di scissor, una sotto-sezione rettangolare definita dall'utente della destinazione di rendering.

Il rettangolo scissor può essere usato per indicare l'area della destinazione di rendering in cui viene disegnato il mondo del gioco. L'area all'esterno del rettangolo è generata e può essere dedicata all'interfaccia utente grafica di un gioco. Il test della scissor non può escludere aree non rettangolari.

I rettangoli scissor non possono essere impostati più grandi della destinazione di rendering, ma possono essere impostati più grandi del riquadro di visualizzazione.

Il rettangolo scissor viene gestito da uno stato di rendering del dispositivo. Un test scissor è abilitato o disabilitato impostando il rendering su TRUE o FALSE. Questo test viene eseguito dopo il calcolo del colore del frammento, ma prima del test alfa. IDirect3DDevice9::SetRenderTarget reimposta il rettangolo scissor nella destinazione di rendering completa, analogamente alla reimpostazione del riquadro di visualizzazione. IDirect3DDevice9::SetScissorRect viene registrato da stateblocks e IDirect3DDevice9::CreateStateBlock con l'impostazione di stato (D3DSBT_ALL valore in D3DSTATEBLOCKTYPE). Il test scissor influisce anche sul dispositivo 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;

Il rettangolo di scissor predefinito è il riquadro di visualizzazione completo.

I test scissor vengono eseguiti subito dopo il completamento dell'elaborazione dei pixel da un pixel shader o dalla pipeline di funzioni fissa, come illustrato nel diagramma seguente.

diagramma di quando viene eseguito il test scissor rispetto ad altri passaggi

Pixel Pipeline