GLfloat vertPos[] = {
0.0F, 0.0F, 0.0F, 1.0F,
0.5F, 0.0F, 0.0F, 1.0F,
0.0F, 0.5F, 0.0F, 1.0F,
};
첫번째 삼각형은 원본 위치에서 이동시켜 그리고,
두번째 삼각형은 원본 위치를 유지하여 그리기
#version 330 core
in vec4 aPos;
in vec4 aColor;
out vec4 vColor;
uniform vec4 uMove; // movement vector: uniform
void main(void) {
gl_Position = aPos + uMove; // 벡터끼리 계산
vColor = aColor;
}
#version 330 core
in vec4 vColor;
out vec4 FragColor;
void main(void) {
FragColor = vColor;
}
void drawFunc(void) {
glClear(GL_COLOR_BUFFER_BIT);
GLuint locPos = glGetAttribLocation(prog, "aPos");
glEnableVertexAttribArray(locPos);
glVertexAttribPointer(locPos, 4, GL_FLOAT, GL_FALSE, 0, vertPos);
GLuint locColor = glGetAttribLocation(prog, "aColor");
glEnableVertexAttribArray(locColor);
glVertexAttribPointer(locColor, 4, GL_FLOAT, GL_FALSE, 0, vertColor);
// draw the first triangle
GLuint locMove = glGetUniformLocation(prog, "uMove"); // uniform 레지스터의 위치 반환
glUniform4f(locMove, -0.5F, -0.5F, 0.0F, 0.0F);
glDrawArrays(GL_TRIANGLES, 0, 3);
// draw the second triangle
glUniform4f(locMove, 0.0F, 0.0F, 0.0F, 0.0F);
glDrawArrays(GL_TRIANGLES, 0, 3);
glFinish();
}
