본문 바로가기
IT/컴퓨터 그래픽스

GPU와 Buffer

by 신인용 2021. 1. 17.
반응형

 

 

 

GPU와 Buffer

 

 

 

 

Buffer

Video Memory에 data를 저장하기 위한 공간 (하드웨어 저장공간)

 

Vertex Buffer Objects (VBO)

Vertex 특성인 Attributes를 담을 수 있는 buffer.

Vertex의 position 이나 Texture Coordinates 등이 있다.

OpenGL 입장에서는 position 하나가 buffer 하나라고 생각하면 된다.

 

Vertex Array (VA)

Vertex의 Attributes 가 여러개, 즉 buffer가 여러개 존재한다. 각각의 buffer가 무엇인지 알기 위해서 번호를 다는 것. 즉 Array에 담은 것이다.

 

 

 

 

 

Vertex Buffer Objects

GPU로 보낼 Vertex 의 position 배열이 있다고 하자.

 

 

 

position 을 담을 Buffer 하나를 생성한다.

 

 

 

어떤 Buffer를 사용할 것이라고 알린다. (어떤 Buffer를 활성화한다고 생각하면 될듯)

 

 

 

Data가 복사되어 활성화된 Buffer로 들어가게 된다.

 

 

 

다른 Buffer 가 있어도, id로 구별할 수 있다.

 

 

 

 

 

Vertex Buffer Array

 

Vertex Array를 하나 생성해준다.

 

 

 

어떤 VertexArray를 사용할 지 지정한다. (활성화한다.)

 

 

 

Vertex Attribute를 Array로 받아오기 위해 Vertex Array에 Attb0 공간 생성해준다.

 

 

 

어떤 Buffer를 가리킬 것인지 지정한 후,

 

 

 

이 Buffer와 Attb0 와 연결시켜 준다.

 

 

 

다른 Buffer도 똑같이 적용해준다.

 

 

 

 

 

 

Rendering

어떤 Shader를 사용할 지 지정해준다.

 

 

 

어떤 VertexArray를 사용할 지 지정해준다.

 

 

 

그리고 해당 Shader로 Rendering 을 진행하는 것이다.

 

 

 

 

 

 

정리

Buffer는 순수하게 Data만 가지고 있는 저장공간이다.

Data를 가지고 의미 있는 결과(화면에 보여질 Color 계산)를 내는 프로그램이 바로 Shader이다.

그렇다면 Shader로 이 Data를 보내야 하는데, Data를 담고 있는 Buffer가 매우 많다. Vertex가 가지고 있는 Attributes는 많기 때문이다. 이 때 Buffer들을 구별하는 게 Vertex Array 이다.

 

ex) 토끼를 그리는 8000개의 xyz Position 정보를 가진 점이 있고, 8000개의 점에 대한 Normal 정보가 있다고 하자.

그렇다면 Position을 담는 Buffer 1번과 Normal를 담는 Buffer 2번이 생성될 것이다.

Buffer 1과 Buffer 2를 각각 Vertex Array 속의 Attb0, Attb1 로 연결시켜 준다.

이 Attb0 과 Attb1 를 Shader와 연결시켜 준다.

Shader가 이를 가지고 연산한다.

결과가 보여진다.

 

 

 

 

 

[참고]

Interactive Computer Graphics: A Top-Down Approach with Shader-based OpenGL 6th edition / 저자: Edward Angel, Dave Shreiner / 출판사: Pearson Education

 

 

반응형

'IT > 컴퓨터 그래픽스' 카테고리의 다른 글

Perspective Projection  (0) 2021.01.18
Camera Coordinates  (0) 2021.01.17
GPU에 data를 전달하기  (0) 2021.01.17
[ 3D Rotation ] 임의의 축으로 회전하기  (4) 2020.12.04
3D Geometric Transformation  (0) 2020.12.04

댓글