DirectX 11 스터디 - 렌더링 파이프라인 기초 핵심 정리
먼저 렌더링 파이프라인 기본 스테이지 순서 (중간중간 세부 스테이지는 스킵)
IA > VS > RS > PS > OM
Input-Assembler Stage
Vertex Shader Stage
Rasterizer Stage
Pixel Shader Stage
Output-Merger Stage
아래 3가지가 명령을 내리는 핵심.
D3D11Device
D3D11DeviceContext
DXGISwapChain
(DXGI (DirectX Graphics Infrastructure) : 기술 발전 속도가 느리거나 고전적인 요소들을 모아둔 기반 인터페이스.)
Device 는 객체를 생성할 때 주로 사용.
DevieContext 를 생성한 객체를 활용해서 명령을 내릴 때 주로 사용.
SwapChain 은 전면/후면 버퍼를 교체/고속복사해서 화면을 갱신하는 역할
DX12 에서는 Device, DeviceContext, SwapChain 이 하나로 통합됨.
SwapChain 에서 ID3D11Texture2D 의 GUID 로 버퍼의 주소를 가져와서 Render Target View 를 생성해주고, DeviceContext::OMSetRenderTargets 함수로 전달해줌으로 백버퍼를 셋팅. 이 버퍼에 렌더링을 해달라는 설정.
SwapChain::Present() 를 호출하면 후면버퍼의 데이터를 전면버퍼로 고속복사해서 화면에 그려지게 됨.
https://learn.microsoft.com/ko-kr/windows/win32/api/dxgi/nf-dxgi-idxgiswapchain-present
여기까지가 장치 초기화.
다음은 그리기 단계.
버텍스버퍼를 생성
인덱스버퍼를 생성
인풋레이아웃 생성, 설정.
버텍스셰이더, 픽셀셰이더 로드/컴파일 후 객체 생성.
셰이더리소스뷰를 생성. 텍스쳐 파일을 로드. 픽셀셰이더 레지스터로 전달.
버텍스에 UV 좌표 설정.
기본 샘플러 스테이트로 픽셀 셰이더 동작.
상수버퍼 생성. 상수버퍼를 셰이더 레지스터로 전달해서 버텍스 트랜스폼 정보 등을 조작.
레스터라이저 스테이트, 샘플러 스테이트, 블랜드 스테이트는 적절히 생성해서 연결.
기초 핵심 정리는 여기까지.
<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas
<DirectX 12를 이용한 3D 게임 프로그래밍 입문> 구입 링크
https://link.coupang.com/a/8V4Wq
유니티 에셋 스토어 링크
https://assetstore.unity.com?aid=1011lvz7h
(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)