Index Buffer

원래벌레·2022년 8월 11일
0

🌞 짧게 Mesh에대한 이야기

  • Mesh를 그려주는 것을 살펴보면 하나의 Mesh 객체를 사용하여 그린다는 점을 알 수 있다. 그렇기 때문에 처음 Mesh에 대한 좌표값에 대한 설정은 한 번만 실행 해주게 된다. Mesh의 Init에서 Mesh는 Descriptor를 만들어준다. 이러한 행동은 자원을 많이 사용하기 때문에 계속해서 할 수가 없다. 그래서 처음 한 번만을 그리고 Render 메소드에서 다른 행동을 해준다.

  • Mesh의 메소드

위 사진의 1~3은 이 리소스를 그리기 위해서 어떠한 것들을 사용하겠다 라고 선언해주는 부분이다. 그리고 최종적으로 4를 통해 그리게 된다.

1은 삼각형으로 그리겠다 라고 선언하는 부분이다.

2는 정점을 vertexBufferView를 이용하여 그리겠다 라고 선언하는 부분이다.

3은 인덱스를 indexBufferView를 이용하여 그리겠다 라고 선언하는 부분이다.

4는 그리기의 인덱스 버전으로 인덱스를 이용하지 않고 정점만을 이용하여 그린다면
CMD_LIST->DrawInstanced(_vertexCount, 1, 0, 0); 와 같이 사용한다.

🌞 Index Buffer

  • 인덱스 버퍼는 기존의 정점만을 이용하여 렌더를 할 경우 중복된 정점을 작성하여야 하여 리소스를 불필요하게 사용하여 프로그램의 부하를 늘리게 된다. 이를 최적화 하는 방법으로 나온것이 인덱스 버퍼이다. 인덱스 버퍼는 중복된 정점을 지우고 정점끼리 겹쳐지는 인덱스들을 줄줄이 배열에 넣어 렌더를 하는 순서를 정해주는 방법이다.

  • 구현
    기존 코드에서 Mesh의 Render 부분의 관여한 부분들을 모두 되짚어서 수정하여야 한다.
    1) Mesh의 구성요소를 Vertex와 Index로 나눈다.
    2) 나눈 Vertex와 Index를 Descriptor로 설명하여 버퍼에 저장하고, 버퍼의 내용을 View에 전달한다.
    3) 위에서 설명한 Render 코드를 작성한다.
    4) 게임실행 부분에서 Vertex와 Index를 지정하여 실행하면 끝
profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글