Поделиться через


Тест на ножницы (Direct3D 9)

Тест ножницы отбрасывает пиксели, которые находятся за пределами прямоугольника ножницы, определяемого пользователем прямоугольного подсечения целевого объекта отрисовки.

Прямоугольник ножницы можно использовать для указания области целевого объекта отрисовки, где рисуется игровой мир. Область за пределами прямоугольника отбирается и может быть посвящена графическому пользовательскому интерфейсу игры. Тест ножницы не может отсеять непрямоугольные области.

Прямоугольники ножниц нельзя задать больше целевого объекта отрисовки, но их можно установить больше, чем окно просмотра.

Прямоугольник ножницы управляется состоянием отрисовки устройства. Проверка ножниц включается или отключается, задав для состояния отрисовки значение TRUE или FALSE. Этот тест выполняется после вычисления цвета фрагмента, но перед альфа-тестированием. IDirect3DDevice9::SetRenderTarget сбрасывает прямоугольник ножницы до полного целевого объекта отрисовки, аналогично сбросу окна просмотра. IDirect3DDevice9::SetScissorRect записывается блоками состояний и IDirect3DDevice9::CreateStateBlock с параметром состояния all (D3DSBT_ALL значение в D3DSTATEBLOCKTYPE). Тест ножниц также влияет на операцию устройства 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;

Прямоугольник ножницы по умолчанию является полным окном просмотра.

Проверка ножниц выполняется сразу после завершения обработки пикселей с помощью пиксельного шейдера или конвейера фиксированной функции, как показано на следующей схеме.

Схема выполнения проверки ножниц относительно других шагов

Конвейер пикселей