DirectX

6.2 색인(index)

Awesome Red Tomato 2021. 12. 24. 11:45

정점과 마찬가지로 색인들을 ID3D12Resource에 넣어두어야 한다. 생성 방법도 정점 버퍼와 동일하게 임시 업로드 힙을 생성해 초기화 해주고 디폴트 힙에 복사해주면 된다.

 

차이점은 색인들을 이용해 그리기는 ID3D12GraphicsCommandList::DrawIndexedInstanced()를 사용한다는 점이다. 여러 물체로 이루어진 장면을 그린다고 하자

 

여러 색인 버퍼를 연결해서 하나의 큰 색인 버퍼를 만들게 된다. 그러면 상자의 실제 색인은 이렇게 된다.

firstBoxVertexPos,

firstBoxVertexPos+1,

· · ·,

firstBoxVertexPos + numBoxVertices - 1

 

따라서 색인 버퍼의 색인들을 갱신하려면 모든 상자 색인에 firstBoxVertexPos를 더해야 한다. 원기둥도 마찬가지다. 하지만 구의 색인처럼 변경할 필요가 없는 물체를 기준 정점 위치(base vertex location)이라고 부르기로 하자. 일반적으로 한 물체의 색인은 각 색인에 정점 위치를 더한 것이다. 그런데 이러한 작업을 직접 수행할 필요는 없다. DrawIndexdInstance 네번째 매개변수로 기준 정점 위치를 지정하면 D3D가 알아서 처리해준다.

'DirectX' 카테고리의 다른 글

6.4 픽셀 셰이더(Pixel Shader)  (0) 2021.12.26
6.3 정점 셰이더(Vertex Shader)  (0) 2021.12.26
6.1 정점(Vertex)  (0) 2021.12.24
6. 렌더링 파이프라인  (0) 2021.12.23
5. 프레임워크  (0) 2021.12.22