Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 전처리문
- Direct Init
- DESC
- Direct3D
- c
- DirectX12
- 세팅
- DirectX
- 다중표본화
- CPU
- DirectXTK
- engine
- C++
- vertex
- UE4
- RenderTargetView
- 다이렉트X
- CommandList
- 프로그래밍
- 다이렉트X 튜토리얼
- 코딩
- View
- 동기화
- Input Assembler
- Direct3D Init
- GPU
- 게임수학
- 다이렉트 초기화
- C언어
- swapchain
Archives
- Today
- Total
비타Cpp
Direct3D의 초기화 - 가위 직사각형 설정 본문
가위 직사각형(Scissor Rectangle)은 특정 픽셀들을 선별(Culling)하는 용도로 쓰인다. 후면 버퍼를 기준으로 가위 직사각형을 정의, 설정하면, 렌더링 시 가위 직사각형의 바깥에 있는 픽셀들은 후면 버퍼에 래스터화 되지 않는다. 이러한 픽셀 선별은 일종의 최적화 기법이다. 예를 들어 다른 모든 것을 가리는 직사각형 UI 요소가 화면의 특정 영역에 있다면, 그 부분에 있는 3차원 세계의 픽셀들은 처리할 필요가 없다(어차피 그 UI 요소가 가릴 것이므로).
가위 직사각형은 D3D12_RECT라는 구조체로 서술한다. 사실 이 구조체는 가조체 RECT에 typedef를 이용해서 다른 이름을 붙인 것이다.
typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT;
typedef RECT D3D12_RECT;
가위 직사각형을 Direct3D에 설정할 때에는 ID3D12CommandList::RSSetScissorRects라는 메서드를 사용한다.
다음은 후면 버퍼의 왼쪽 위 사분면을 덮는 가위 사각형을 설정하는 예이다.
mScissorRect = { 0, 0, mClientWidth/2, mClientHeight/2 };
mCommandList->RSSetScissorRects(1, &mScissorRect);
RSSetViewport 메서드와 비슷하게, 이 메서드의 첫 매개변수는 설정할 가위 직사각형들의 개수이고, 둘째 매개변수는 직사각형 구조체들의 배열을 가리키는 포인터이다.
※ 하나의 렌더 대상에 여러 개의 가위 직사각형을 지정할 수는 없다. 다중 가위 직사각형은 장면을 동시에 여러 개의 렌더 대상에 렌더링 하는 고급 기법들에 쓰인다.
※ CommandList를 재설정(Reset)하면 가위 직사각형들도 재설정 해야한다.
'DirectX12 > 튜토리얼' 카테고리의 다른 글
Direct3D Base 클래스 - D3DApp (0) | 2021.10.16 |
---|---|
시간 측정 (0) | 2021.10.10 |
Direct3D의 초기화 - 뷰포트 생성 (0) | 2021.10.09 |
Direct3D의 초기화 - 8. 깊이·스텐실 버퍼와 뷰 생성 (0) | 2021.10.09 |
Direct3D의 초기화 - 7.렌더 대상 뷰(RTV) 생성 (0) | 2021.10.08 |
Comments