Added camera panning

This commit is contained in:
2023-05-09 14:43:25 +03:00
parent abf1b26ba2
commit 51be423c44
+7 -6
View File
@@ -67,6 +67,7 @@ public:
grbl::program_renderer renderer;
glm::vec3 cam_target = glm::vec3(0);
glm::vec3 cam_pan = glm::vec3(0);
float cam_zoom = 0;
glm::quat cam_src_rotation = glm::quat(1.0, 0.0, 0.0, 0.0); // identity quaternion
@@ -128,10 +129,9 @@ public:
perform_layout();
m_render_pass = new RenderPass({this});
m_render_pass = new RenderPass({this}, nullptr, nullptr, nullptr, true);
m_render_pass->set_clear_color(0, Color(0.13f, 0.13f, 0.13f, 1.f));
m_render_pass->set_clear_depth(0.0);
m_render_pass->set_depth_test(RenderPass::DepthTest::Always, true);
m_render_pass->set_depth_test(RenderPass::DepthTest::Greater, true);
m_render_pass->set_cull_mode(RenderPass::CullMode::Disabled);
}
@@ -955,8 +955,8 @@ public:
}
} else if (is_panning) {
// cam_src.x += (float) rel.x() / 10.0f;
// cam_src.y += (float) rel.y() / 10.0f;
cam_pan.x += (float) rel.x() / 10.0f;
cam_pan.y -= (float) rel.y() / 10.0f;
}
return true;
}
@@ -1007,10 +1007,11 @@ public:
glm::mat4 view = glm::translate(glm::mat4(1.0f), glm::vec3(0, 0, -cam_zoom)) *
glm::toMat4(cam_src_rotation) *
glm::translate(glm::mat4(1.0f), -cam_target);
glm::translate(glm::mat4(1.0f), cam_pan - cam_target);
glm::mat4 model = glm::mat4(1.0f);
glm::mat3 normal_mat = glm::inverseTranspose(glm::mat3(view * model));
renderer.render(model, view, projection, normal_mat, glm::vec2(fb_size.x(), fb_size.y()));
}