- Device
- DeviceContext
- SwapChain
- DX보다 기술 변화가 느린 애들을 모아 DXGI라는 라이브러리를 만들어 사용하는 것 중 하나
- 후면버퍼에 그린 것을 전면 버퍼에 빠르게 복사하는 역할
- 장치 초기화
- 렌더링을 할땐 Render 함수가 매 프레임 호출
- RenderBegin과 RenderEnd 사이에서 나머지 사물들을 그려주면 됨
- RenderBegn
- OMSetRenderTargetView
- 우리가 만든 swapChain의 후면 버퍼에다 그림을 그리기 위해 사용
- ClearRenderTargetView
- 프레임마다 리셋을 해주는 역할
- 초반에 한번만 해줘도 되기 때문에 여기서 안해줘도 됨
- RSSetViewports
- 화면에 들어가는지 RS 단계에서 판단해 그려주는 놈
- RenderEnd
- SwapChain변수에 Present를 통해 후면 버퍼에서 전면 버퍼에 고속 복사가 일어나 화면에 그림이 보임
- 삼각형 그리기
- vertex 정보 만들기
- vertex buffer 만들기
- CPU 메모리에 저장된 정보를 GPU에 복사해줌
- GPU에서 읽기만 가능하도록 설정
- Index Buffer
- Vertex정보가 많아지면 중복 현상이 생기기 때문에 정점을 Index로 묶어 저장한 뒤 GPU로 넘겨줌
- InputLayout
- 우리가 만들어준 Vertex Buffer가 어떤 식으로 되어있는지 묘사해주는 역할
- Shader와 맞물려있음
- Render
- Render시 IA 단계에서 Vertex/Index Buffer, Layout을 셋팅
- IA 단계에서 마지막으로 어떻게 그릴지 설정
- LaodShaderFromFile
- VS, PS 쉐이더를 만들때 쉐이더를 불러오기 위해 직접 만든 함수
- ID3DBlob을 통해 Shader에서 만들어진 ByteCode로 저장
- Create VS/PS
- VS, PS 쉐이더를 만들기 위해 직접 만든 함수
- LaodShaderFromFile에서 ID3DBlob에 저장된 값으로 쉐이더 리소스로 변경
- Render
- VS/PS 단계에서 Create 함수에서 만든 쉐이더 리소스를 가지고 셋팅을 해줌
- UV 맵핑
- 텍스처를 우리가 픽셀 쉐이더 인자인것 처럼 사용하는것
- CreateSRV
- Render
- 만들어진 srv 가지고 PS 단계에서 렌더링 파이프라인에 묶어줌
- UV
- UV역시 Geometry에서 vertex의 Position등을 만드는 것처럼 만들어짐
- 0~1 사이의 값을 갖는게 보통
- Shader에서 PS를 처리해주는 함수에서 texture에서 uv를 꺼내 사진의 색을 입혀줌
- 이때 UV값이 0~1을 벗어나면 sampler에 설정한 규칙대로 변함
- Constant Buffer
- Geometry에서 만들어진 Buffer들은 특정 사물의 모양을 가지고 있는데 이들은 일반적으로 바꾸지 않는다
- 그래서 이 사물을 이동, 회전 등등을 하기 위해 ConstantBuffer를 사용
- Buffer DESC를 다른 Buffer와 달리 Dynamic으로 만들어 CPU가 데이터를 복사할 수 있게 만들어줌
- 나머지는 문서를 보면서 파악하면서 알아가면 된다