剪刀测试 (Direct3D 9)
剪刀测试将剪裁矩形外部的像素(呈现目标的用户定义矩形子部分)之外。
剪刀矩形可用于指示绘制游戏世界的呈现目标区域。 矩形外的区域被剔除,可以用于游戏的 GUI。 剪刀测试无法剔除非矩形区域。
剪裁矩形不能设置为大于呈现目标,但可以设置大于视区。
剪刀矩形由设备呈现状态管理。 通过将 renderstate 设置为 true 或 FALSE来启用或禁用剪裁器测试。 此测试是在计算片段颜色之后但在 alpha 测试之前执行的。 IDirect3DDevice9::SetRenderTarget 将剪刀矩形重置为完整的呈现目标,类似于视区重置。 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;
默认剪裁矩形是完整的视区。
剪裁器测试是在像素着色器或固定函数管道完成像素处理后完成的,如下图所示。
相关主题