래스터화 단계는 래스터화기 상태(rasterizer state)를 통해 구성한다. 대표적으로 D3D12_RASTERIZER_DESC 구조체를 사용한다.
https://docs.microsoft.com/en-us/windows/win32/api/d3d12/ns-d3d12-d3d12_rasterizer_desc
D3D12_RASTERIZER_DESC (d3d12.h) - Win32 apps
Describes rasterizer state.
docs.microsoft.com
다음 네 멤버 이외에는 고급 기법이거나 자주 사용하지 않으므로 SDK 문서화를 참고하길 바란다.
1. FillMode: 와이어프레임(wireframe) 렌더링을 위해서는 D3D12_FILL_WIREFRAME을, 면의 속을 채운(solid) 렌더링을 위해서는 D3D12_FILL_SOLID를 지정한다.
2. CullMode: 후면 삼각형 선별을 끄려면 D3D12_CULL_NONE을, 선별하려면 D3D12_CULL_BACK을, 전면 삼각형을 선별하려면 D3D12_CULL_FRONT를 지정한다.
3. FrontCounterClockwise: 정점들이 시계방향으로 감긴 삼각형을 전면 삼각형으로, 반시계로 감긴 삼각형을 후면 삼각형으로 취하려면 false로 지정한다.
4. ScissorEnable: 가위 판정을 활성화 하려면 true, 비활성화는 false를 지정한다. 기본은 false이다.
다음 코드는 와이어프레임 모드를 켜고 후면 선별을 끄는 래스터화기 상태를 생성하는 방법이다.
CD3DX12_RASTERIZER_DESC rsDesc(D3D12_DEFAULT);
rsDesc.FillMode = D3D12_FILL_WIREFRAME;
rsDesc.CullMode = D3D12_CULL_NONE;
이 클래스는 D3D12_DEFAULT 형식의 객체를 받는 생성자를 제공하는데 이 생성자는 래스터화기 상태의 멤버들을 모두 기본값으로 초기화한다. D3D12_DEFAULT는 여려 편의용 D3D 클래스들에 쓰인다.
'DirectX' 카테고리의 다른 글
6.10 기하구조 보조 구조체 (0) | 2022.01.03 |
---|---|
6.9 파이프라인 상태 객체 (0) | 2022.01.03 |
6.7 셰이더의 컴파일 (0) | 2021.12.31 |
6.6 루트 서명과 서술자 테이블 (0) | 2021.12.31 |
6.5 상수 버퍼(Constant buffer) (0) | 2021.12.26 |