4 Commits
master ... ov2

2 changed files with 19 additions and 9 deletions

View File

@@ -3,17 +3,9 @@
in layout(location=0) vec3 position;
in layout(location=1) vec4 aColor;
out vec4 vColor;
mat4 transform;
uniform mat4 transform;
void main() {
transform = mat4(
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
);
gl_Position = transform * vec4(position, 1.0f);
vColor = aColor;
}

View File

@@ -236,6 +236,8 @@ fn main() {
.attach_file("./shaders/simple.frag")
.link()
};
// get uniform location for the matrix (named `transform` in your vertex shader)
let transform_loc = unsafe { simple_shader.get_uniform_location("transform") };
// Used to demonstrate keyboard handling for exercise 2.
let mut _arbitrary_number = 0.0; // feel free to remove
@@ -298,6 +300,22 @@ fn main() {
// == // Issue the necessary gl:: commands to draw your scene here
simple_shader.activate();
// build and send the transform matrix (start from identity)
let mut transform: glm::Mat4 = glm::identity();
// cycle through each transform parameter (a,b,c,d,e,f) over time
let cycle_duration = 2.0;
let idx = ((elapsed / cycle_duration).floor() as usize) % 6;
let v = elapsed.sin();
match idx {
0 => transform[(0,0)] = v, // a
1 => transform[(0,1)] = v, // b
2 => transform[(0,3)] = v, // c
3 => transform[(1,0)] = v, // d
4 => transform[(1,1)] = v, // e
5 => transform[(1,3)] = v, // f
_ => {}
}
gl::UniformMatrix4fv(transform_loc, 1, gl::FALSE, transform.as_ptr());
gl::BindVertexArray(my_vao);
gl::DrawElements(
gl::TRIANGLES,