티스토리 뷰

OpenGL super bible 개정 6판 번역본을 공부하면서 기억해두고 싶은 것, 내가 과연 제대로 이해하고 있는게 맞나 싶은 것들을 정리하는 차원에서 이 글을 작성한다.

저작물의 특정 내용을 인용한다고 명시하더라도 법적 문제가 발생할 수 있다는 소리를 어디서 들었는데, 되도록이면 책의 표현을 나의 방식으로 해석하고, 표현하고자 할 것이다. 법적 문제가 없길..


1. 시작 


OpenGL은 데이터를 저장하고 접근하기 위해 두 가지 형태의 데이터 스토리지를 제공한다고 한다.


1. 버퍼

2. 텍스처


이번 글에서는 버퍼를 알아보도록 하자.


버퍼는 타입이 정해져 있지 않은 데이터의 연속 공간이다.

삼각형의 각 꼭지점 좌표값들을 담거나, 특정 위치의 색 정보, RGB값들을 담을 공간이라고 할 수 있다.


우선 용어 정리를 해보자 : 물리적인 공간과 논리적인 공간


물리적인(Physical) 공간이란 실제로 데이터가 저장되는 곳, CPU(?), GPU(?), 주기억장치(RAM) 혹은 보조기억장치의 어느 위치, 혹은 범위라고 할 수 있다.


논리적인(Logical) 공간은 물리적인 공간에 존재하는 특정 데이터 집합을 대표하는 개념으로 개발자가 코딩함에 있어서 직접 다룰 수 있는 객체라고 생각한다(내 생각). 예를 들어 Buffer object나, Vertex array object를 논리적인 공간이라고 할 수 있다.


중요한 것은 OpenGL에서 물리적인 공간과 논리적인 공간을 어떻게 연결하는지, 논리적인 공간을 어떻게 다루는 지에 대한 것이다.


우선 내가 책을 통해 배운 내용을 그림으로 한 번 표현해보도록 하겠다.



Figure 1. 내가 생각한 Diagram (190308수정사항 발견, 수정예정!)


Figure 2. 구글링을 통해서 조사한 diagram

(출처 :https://cognitivewaves.wordpress.com/opengl-terminology-demystified/)


내가 생각한 diagram이랑 구글링을 통해 찾은 diagram이 서로 다르다. Figure2를 먼저 보면, CPU part, GPU part로 구분되어 있는 것을 확인할 수 있다. 또한 Shader와 VBO가 Vertex Attribute를 통해서 연결되어 있는 것을 볼 수 있다. 

    반면, 내가 생각한 diagram은 VBO와 VAO가 vertexAttrib*을 통해 연결되어 있는 것으로 표현되어 있다. Figure1과 Figure2에서 각각의 요소들의 연결 상태, 연결 순서는 차이가 있다. 어떤 diagram이 opengl을 더 정확하게 표현하고 있는지 확인하기 위해서는 알아봐야 할 것들이 있다. 우선 VAO와 VBO의 차이를 알아야 한다.



2. VAO와 VBO


https://www.khronos.org/opengl/wiki/Tutorial2:_VAOs,_VBOs,_Vertex_and_Fragment_Shaders_(C_/_SDL)의 글에서 그 차이를 알아낼 수 있었다.


VAO(Vertex Array Object)는 하나 혹은 여러개의 VBO(Vertex Buffer Object)를 담을 수 있는 객체에 해당한다. 그리고 최종적으로 렌더링된(Complete rendered) 오브젝트에 대한 정보를 저장하는데 사용된다. 예를 들면, 정육면체의 8개의 꼭지점 좌표값(X, Y, Z, W)들과 각 꼭지점에서의 색(R, G, B, A)들을 담는데 사용되는 것이 VAO이다.


VBO는 컴퓨터의 비디오 카드(GPU)의 메모리 공간(high speed memory) 상에 있는 메모리 버퍼에 해당한다.

예를 들면, 하나의 정육면체는 두 개의 VBO로 표현 가능한데, 위치 정보를 담고 있는 VBO와 색상 정보를 담고 있는 VBO로 구분할 수 있다.


여러 VBO를 준비시켜두고 필요에 따라 VAO와 연결하여 원하는 오브젝트를 그릴 수 있도록 하기 위해 

glVertexAttribPointer와 glEnableVerTexAttribArray와 같은 함수를 사용하는 것으로 보인다.



혹시 제가 작성한 이 글에 잘못된 점이 있다면 댓글로 알려주시면 감사하겠습니다.







댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함