OpenGL Concept
OpenGL 기초
OpenGL
그래픽 랜더링을 위해 CPU에서 GPU로 데이터 전송을 돕는 API.
OpenGL Buffer 객체에 데이터를 담아서 데이터를 전송한다.
OpenGL Buffer
자료형이 없는 선형 데이터 블록. 다차원 데이터(이미지 등)을 담을 수 없다. 다차원데이터는 Texture객체에 담아 전송한다.
Vertex Attribute
Vertex Shader의 input variable.
Vertex Shader
정점 좌표 계산을 위한 셰이더. in 과 out 키워드를 통해 외부와 데이터를 주고받을 수 있다.
Fragment Shader
각 픽셀의 색을 결정하기 위한 셰이더. Rasterizer의 output을 받아서 각 해당 픽셀의 색을 계산한다. 즉, 각각의 픽셀마다 Fragment Shader가 실행된다.
Vertex Attribute vs. Uniform
Vertex Attribute는 오직 Vertex Shader에서만 받아볼 수 있지만, Uniform은 어떤 셰이더든지(Vertex, Tessellation, Geometry, Fragment)도 받을 수 있다.
Texture, Texture Unit
이미지 정보를 담을 수 있는 OpenGL API 객체. Texture Object와 Sampler Object를 묶어서 Texture Unit이라 한다.
Sampler, Sampler Object
Texture와 Sampling parameters를 표현하는 수단. Sampler Object에 Texture를 표현하는 데 필요한 정보(Wrapping Mode, Filtering Mode)를 저장한다.
Texture Filtering
텍스쳐를 확대(Magnification), 축소(Minification) 하는 과정에서의 색상 계산 방법.
Application 에 OpenGL Shader를 적용하는 법
- glCreateShader를 통해 셰이더 Object를 생성.
- glShaderSource를 통해 glsl코드를 로드.
- glComplieShader를 통해 각 Shader 코드를 컴파일.
- glCreateProgram을 통해 Shader Program 객체 생성.
- glAttachShader를 통해 Shader와 Shader Program Object을 연결.
- glLinkProgram을 통해 Shader Program을 Rendering Pipeline에 등록.
- glUseProgram을 통해 Shader Program 사용.
References
OpenGL Concept