OpenGL Concept

OpenGL 기초


OpenGL

그래픽 랜더링을 위해 CPU에서 GPU로 데이터 전송을 돕는 API.
OpenGL Buffer 객체에 데이터를 담아서 데이터를 전송한다.



OpenGL Buffer

자료형이 없는 선형 데이터 블록. 다차원 데이터(이미지 등)을 담을 수 없다. 다차원데이터는 Texture객체에 담아 전송한다.



Vertex Attribute

Vertex Shader의 input variable.
Vertex and Fragment Shader



Vertex Shader

정점 좌표 계산을 위한 셰이더. inout 키워드를 통해 외부와 데이터를 주고받을 수 있다.



Fragment Shader

각 픽셀의 색을 결정하기 위한 셰이더. Rasterizeroutput을 받아서 각 해당 픽셀의 색을 계산한다. 즉, 각각의 픽셀마다 Fragment Shader가 실행된다.



Vertex Attribute vs. Uniform

Vertex Attribute는 오직 Vertex Shader에서만 받아볼 수 있지만, Uniform은 어떤 셰이더든지(Vertex, Tessellation, Geometry, Fragment)도 받을 수 있다.



Texture, Texture Unit

이미지 정보를 담을 수 있는 OpenGL API 객체. Texture ObjectSampler Object를 묶어서 Texture Unit이라 한다.



Sampler, Sampler Object

TextureSampling parameters를 표현하는 수단. Sampler ObjectTexture를 표현하는 데 필요한 정보(Wrapping Mode, Filtering Mode)를 저장한다.

Texture Unit



Texture Filtering

텍스쳐를 확대(Magnification), 축소(Minification) 하는 과정에서의 색상 계산 방법.



Application 에 OpenGL Shader를 적용하는 법

  1. glCreateShader를 통해 셰이더 Object를 생성.
  2. glShaderSource를 통해 glsl코드를 로드.
  3. glComplieShader를 통해 각 Shader 코드를 컴파일.
  4. glCreateProgram을 통해 Shader Program 객체 생성.
  5. glAttachShader를 통해 Shader와 Shader Program Object을 연결.
  6. glLinkProgram을 통해 Shader Program을 Rendering Pipeline에 등록.
  7. glUseProgram을 통해 Shader Program 사용.

References

Author

Joyus.Gim

Posted on

2022-04-17

Updated on

2022-07-19

Licensed under

Comments