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 );
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.