버텍스 - 지오메트리 셰이더로부터 출력된 정점정보는 레스터라이저 스테이지에 보내진후 렌더링 될 픽셀로 변환된다.
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);
}