1. Direct3D
1.1 Direct3D initialization
1.1.1 Device & Device Context Create
- Direct3D의 주된 인터페이스로 물리적인 그래픽 장치 하드웨어에 대한 소프트웨어 제어기
- 응용 프로그램은 이 인터페이스들을 통해 하드웨어에게 할 일을 지시
- GPU 메모리 자원 할당, Back Buffer 지우기, 자원을 여러 파이프라인 단계에 묶기, 기하구조 그리기 등
ComPtr<ID3D11Device> _device; ComPtr<ID3D11DeviceContext> _deviceContext;
- Device Interface → 기능 지원 점검과 자원 할당
- Device Context Interface → 렌더 대상을 결정, 자원을 그래픽 파이브라인에 묶고 GPU가 수행할 렌더링 명령 지시
1.1.2 Swap Chain Setting & Create
- Device를 초기화 한 후 Swap Chain을 생성하기 위해 DXGI_SWAP_CHAIN_DESC 구조체 인스턴스를 만듦
- 만든 구조체 인스턴스를 이용하여 특성 설정
ComPtr<IDXGISwapChain> _swapChain;
- 위에서 생성한 구조체를 이용하여 함수를 호출하여 Swap Chain Interface 생성
1.1.3 Render Target View
- 자원을 파이프라인의 단계에서 직접 묶는 것이 아닌 자원에 대한 View를 생성하고 그 View를 묶어야 함
- Back Buffer를 OM단계에서 묶으려면 Back Buffer에 대한 Render Target View를 생성
ComPtr<ID3D11RenderTargetView> _renderTargetView;
1.1.4 Depth & Stencil Buffer, View
- Depth Buffer는 깊이 정보를 담는 2차원 Texture, Stencil Buffer 또한 스텐실 정보를 담는 2차원 Texture
- 2차원 Texture를 생성할 때 사용하는 구조체를 채우고 함수를 호출해 Texture 생성
ComPtr<ID3D11Texture2D> _depthStencilBuffer;
- Depth & Stencil View를 사용하기 위해 파이프라인에 붙임
- Back Buffer에서 사용한 방식 그대로 Render Target View를 이용하여 View 생성
- Texture에 초기 자료를 가르키는 포인터는 Depth & Stencil Buffer로 사용할 것이므로 채울 필요X
- 깊이 버퍼링 및 스텐실 연산을 수행할 때는 Direct3D가 직접 Depth & Stencil Buffer를 기록
ComPtr<ID3D11DepthStencilView> _depthStencilView;
- 위의 방식을 통해 Depth & Stencil Buffer, View를 생성하였으므로 OM 단계에 묶음
_deviceContext->OMSetRenderTargets(1, _renderTargetView.GetAddressOf(), _depthStencilView.Get());
1.1.5 Viewport
- 3차원 장면을 Back Buffer 전체에 그리지만 일부를 차지하는 직사각형 영역에만 그리는 것도 가능
- 장면을 그려 넣고자 하는 Back Buffer의 부분 직사각형 영역을 Viewport
- 원하는 구조체를 생성한 후 함수를 이용하여 Direct3D에게 Viewport를 알림 (RSSetViewports)
D3D11_VIEWPORT _viewport;
- 2인용 모드를 위해 화면을 분할하는 경우
- 화면 왼쪽 절반을 위한 Viewport & 화면 오른쪽 절반을 위한 Viewport 생성
- 플레이어 2명의 관점에서 보는 장면을 Viewport에 그림
- 또한 인터페이스로도 사용할 수 있음
'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글
[Direct11] 4. Rendering Pipeline - Input Assembler (IA) (0) | 2023.06.13 |
---|---|
[Direct11] 3. Direct3D EX Application Framework (0) | 2023.06.12 |
[Direct11] 1. Direct3D Basic Knowledge (0) | 2023.06.12 |
[GameMath] 24. Intersection # Triangle to Point (0) | 2023.04.22 |
[GameMath] 23. Ray Cast # Ray to Plane (0) | 2023.04.22 |