Index Buffer
-> 사각형을 그려야한다고 해보자. 이 또한 삼각형으로 그린 사각형이다( 두개의 삼각형 ).

대충 이런식으로 positions 을 설정해야 할 것이다.
근데 생각해보면 두개의 삼각형은 두개의 점을 공유한다. 그래서 그 두개의 점을 그냥 하나의 점으로 재사용할 수 만 있으면 우리는 6개의 vertex 가 아니라 4개의 vertex 만으로 사각형을 그릴수 있다.
이떄 index buffer 를 사용해서 이미 한번 사용한 vertex 를 다시한번 사용할수 있도록 해서 메모리를 아끼는 것이다.
"아니 6개에서 4개 줄이는걸로 뭐 얼마나 메모리아낄려고?"
3D 우주선을 만든다고해보자. 엄청나게 많은 삼각형으로 렌더링을 할건데 거기에서 공유되는 vertex 만 재사용할 수 있다면 메모리를 엄청나게 아낄 수 있을 것이다.

자 그럼 아까 포지션을 이런식으로 바꿔볼 것이다. (겹치는 2개의 점은 없앴다)
여기선 indices 가 index buffer 일 것이고 겹치는 부분을 어떤 것으로 설정할 것인지 cpu 에서 gpu 에게 알려주는 역할이다.

이후 Vertex Buffer 처럼 바인드를 해야한다.하지만 키 포인트는
GL_ELEMENT_ARRAY_BUFFER 에다가 바인드를 해야줘야 한다. (어떤 요소들을 넣을 것인가?)

마지막으로 바인드 된 인덱스 버퍼를 그릴떈 DrawElements 를 사용한다.
결과는?

아름다운 파란 사각형이 나온다.
'개인공부 > C++ Graphics' 카테고리의 다른 글
| OpenGL #7 Uniform (0) | 2025.01.12 |
|---|---|
| OpenGL #6 Error Handling (1) | 2025.01.11 |
| OpenGL #4 Shader (0) | 2025.01.11 |
| OpenGL #3 Vertex Buffer (1) | 2025.01.10 |
| OpenGL #2 GLEW 설치 (2) | 2025.01.10 |