Added camera panning
This commit is contained in:
@@ -67,6 +67,7 @@ public:
|
|||||||
grbl::program_renderer renderer;
|
grbl::program_renderer renderer;
|
||||||
|
|
||||||
glm::vec3 cam_target = glm::vec3(0);
|
glm::vec3 cam_target = glm::vec3(0);
|
||||||
|
glm::vec3 cam_pan = glm::vec3(0);
|
||||||
float cam_zoom = 0;
|
float cam_zoom = 0;
|
||||||
glm::quat cam_src_rotation = glm::quat(1.0, 0.0, 0.0, 0.0); // identity quaternion
|
glm::quat cam_src_rotation = glm::quat(1.0, 0.0, 0.0, 0.0); // identity quaternion
|
||||||
|
|
||||||
@@ -128,10 +129,9 @@ public:
|
|||||||
|
|
||||||
perform_layout();
|
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_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::Greater, true);
|
||||||
m_render_pass->set_depth_test(RenderPass::DepthTest::Always, true);
|
|
||||||
m_render_pass->set_cull_mode(RenderPass::CullMode::Disabled);
|
m_render_pass->set_cull_mode(RenderPass::CullMode::Disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -955,8 +955,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (is_panning) {
|
} else if (is_panning) {
|
||||||
// cam_src.x += (float) rel.x() / 10.0f;
|
cam_pan.x += (float) rel.x() / 10.0f;
|
||||||
// cam_src.y += (float) rel.y() / 10.0f;
|
cam_pan.y -= (float) rel.y() / 10.0f;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1007,10 +1007,11 @@ public:
|
|||||||
|
|
||||||
glm::mat4 view = glm::translate(glm::mat4(1.0f), glm::vec3(0, 0, -cam_zoom)) *
|
glm::mat4 view = glm::translate(glm::mat4(1.0f), glm::vec3(0, 0, -cam_zoom)) *
|
||||||
glm::toMat4(cam_src_rotation) *
|
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::mat4 model = glm::mat4(1.0f);
|
||||||
glm::mat3 normal_mat = glm::inverseTranspose(glm::mat3(view * model));
|
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()));
|
renderer.render(model, view, projection, normal_mat, glm::vec2(fb_size.x(), fb_size.y()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user