scissor rect

반응형

각 정점들이 윈도우 공간으로 절단, 변환되고 나면 GPU는 각 그래픽 기본 도형들이
뷰포트의 어떤 픽셀들로 덮을 것인지를 결정해야 하는데 기본 도형에 속한 영역을 한줄씩 픽셀들로
채우는 과정을 rasterization이라고 부른다.

GPU는 각 픽셀마다 깊이, 보간된 정점 색, 보간된 텍스쳐 좌표들을 계산하며 이러한 정보들과
픽셀 자체의 위치를 하나로 묶어서 단편(fragment)라고 한다.


이 그림은 단편에 대해 GPU가 수행하는 연산을 나타낸 것이다.
가위판정(scissor test)가 보인다.
응용프로그램은 뷰포트 안에 가위 사각형이라고 하는 사각형 영역을 지정할 수 있는데
이 사각형은 렌더링이 일어나는 영역을 결정하고 그 영역 바깥의 단편들은 모두 폐기한다.
이러한 일을 하는 한가지 용도는 스텐실 그림자이다.

IDirect3DDevice9::SetScissorRect

Sets the scissor rectangle.  가위 사각형 영역을 설정한다.

HRESULT SetScissorRect(  CONST RECT * pRect);

Parameters

pRect
[in] Pointer to a RECT structure that defines the rendering area within the render target if scissor test is enabled. This parameter may not be NULL.
만약 가위테스트가 사용가능하다면, 렌더 타겟 영역의 사각형 영역을 인자로 받는다.

Return Values

If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be D3DERR_INVALIDCALL.

Remarks

The scissor rectangle is used as a rectangular clipping region.

See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.

Requirements

Header: Declared in D3D9.h.


ex) 렌더링 예제 코드
RECT rect;
rect 영역 설정.

Device->SetRenderState( D3DRS_SCISSORTESTENABLE, TRUE );
Device->SetScissorRect( &rect );

렌더링 코드.

Device->SetRenderState( D3DRS_SCISSORTESTENABLE, FALSE );

// scissor text
 RECT rt;
  rt.top = 0;
  rt.bottom = 400;
  rt.left = 0;
  rt.right = 400;
 LPDIRECT3DDEVICE9 pDevice = g_pDevice->GetDevice();
 pDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, TRUE);
 pDevice->SetScissorRect(&rt);

숫자, 엔티티 렌더링

pDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);

위와 같이 해당영역만큼 잘려서 렌더링이 된다. 

'작업장 > 발표하기' 카테고리의 다른 글

Collada 발표 (참고자료)  (0) 2010.11.28
증강현실 발표  (0) 2010.11.09
D Language - study 발표 자료들  (0) 2010.09.12
flocking - study 발표 자료들  (0) 2010.09.12
state manager, shader pool ppt  (0) 2010.02.25
TAGS.

Comments