버텍스 - 지오메트리 셰이더로부터 출력된 정점정보는 레스터라이저 스테이지에 보내진후 렌더링 될 픽셀로 변환된다.

Top-left_triangle_rasterization_rule.gif

Untitled

Direct3D에서는 이러한 과정을 통틀어서 레스터라이제이션 이라고 부르고 고정 파이프라인 단계로 프로그래밍이 불가능하며 자체 알고리즘을 통해 동작한다.

레스터라이제이션은 다음과 같은 역할을 수행한다.

래스터 라이저 스테이트 오브젝트를 만드려면 늘 하던 식의 D3D11_RASTERIZER_DESC 구조체를 만들고

ID3D11Device::CreateRasterizerState함수를 호출하여 생성한다.

//  래스터라이저 스테이트 오브젝트 생성

D3D11_RASTERIZER_DESC RSDesc;
RSDesc.FillMode = D3D11_FILL_SOLID;           // 평범하게 렌더링
RSDesc.CullMode = D3D11_CULL_NONE;         // 컬모드 하지 않음
RSDesc.FrontCounterClockwise = FALSE;        // 시계방향이 뒷면임 CCW
RSDesc.DepthBias             = 0;                      //깊이 바이어스 값 0
RSDesc.DepthBiasClamp        = 0;
RSDesc.SlopeScaledDepthBias  = 0;
RSDesc.DepthClipEnable       = FALSE;            // 깊이 클리핑 없음
RSDesc.ScissorEnable         = FALSE;             // 시저 테스트 하지 않음
RSDesc.MultisampleEnable     = FALSE;          // 멀티 샘플링 하지 않음
RSDesc.AntialiasedLineEnable = FALSE;         // 라인 안티앨리어싱 없음

hr = g_pD3DDevice->CreateRasterizerState(&RSDesc, &g_pRasterizerState);

D3D11_RASTERIZER_DESC(d3d11.h) - Win32 apps

그리고 생선된 오브젝트로 레스터라이저 스테이트에 묶어준다.

	void GraphicDevice_DX11::BindRasterizerState(ID3D11RasterizerState* pRasterizerState)
	{
		mContext->RSSetState(pRasterizerState);
	}