Vector
Dot Product
- 내적값과 magnitude를 알고 있다면 두 벡터사이의 각도를 알 수 있음.
Cross Product
- 두 벡터에 대한 직교 벡터를 생성
- 빛 연산, 충돌 감지에 유용함.
Matrix
- Model Transforms (translation, rotation, scaling)
- Projection
- View


X Rotation

Y Rotation

Z Rotation

GLM
#version 330
in vec3 pos;
uniform mat4 model;
void main()
{
gl_Position = model * vec4(pos, 1.0f);
}
glm::mat4 model(1.0f);
model = glm::translate(model, glm::vec3(1.0f, 2.0f, 0.0f));
model = glm::rotate(model, PI / 360.0 * 45.0, glm::vec3(0.0f, 0.0f, 1.0f));
model = glm::scale(model, glm::vec3(0.4f, 0.4f, 1.0f));
- 셰이더 내에서 사용되는 전역변수
- 한 번 설정된 값은 해당 셰이더 프로그램을 사용하는 모든 정점과 프래그먼트에 균일하게 적용됨.
사용 과정
- 셰이더 코드 상단에 uniform 키워드를 사용해 변수 선언
- 메인 프로그램에서 셰이더에 선언된 uniform 변수의 Location을 찾고, 그 위치에 값을 전달함.
#version 330
layout (location = 0) in vec3 pos;
uniform float xMove;
void main() {
gl_Position = vec4(0.4 * pos.x + xMove, 0.4 * pos.y, pos.z, 1.0f);
}
GLuint uniformXMove = glGetUniformLocation(shader, "xMove");
...
glUniform1f(uniformXMove, triOffset);