Optimization in GLCanvas3D::_render_camera_target()
This commit is contained in:
parent
4b4ed423ef
commit
24bcbd9c0c
1 changed files with 10 additions and 11 deletions
|
@ -6070,35 +6070,34 @@ void GLCanvas3D::_render_camera_target()
|
|||
|
||||
#if ENABLE_LEGACY_OPENGL_REMOVAL
|
||||
const Vec3f& target = wxGetApp().plater()->get_camera().get_target().cast<float>();
|
||||
bool target_changed = !m_camera_target.target.isApprox(target.cast<double>());
|
||||
m_camera_target.target = target.cast<double>();
|
||||
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
if (!m_camera_target.axis[i].is_initialized() || target_changed) {
|
||||
if (!m_camera_target.axis[i].is_initialized()) {
|
||||
m_camera_target.axis[i].reset();
|
||||
|
||||
GLModel::Geometry init_data;
|
||||
init_data.format = { GLModel::Geometry::EPrimitiveType::Lines, GLModel::Geometry::EVertexLayout::P3, GLModel::Geometry::EIndexType::USHORT };
|
||||
init_data.format = { GLModel::Geometry::EPrimitiveType::Lines, GLModel::Geometry::EVertexLayout::P3 };
|
||||
init_data.color = (i == X) ? ColorRGBA::X() : ((i == Y) ? ColorRGBA::Y() : ColorRGBA::Z());
|
||||
init_data.reserve_vertices(2);
|
||||
init_data.reserve_indices(2);
|
||||
|
||||
// vertices
|
||||
if (i == X) {
|
||||
init_data.add_vertex(Vec3f(target.x() - half_length, target.y(), target.z()));
|
||||
init_data.add_vertex(Vec3f(target.x() + half_length, target.y(), target.z()));
|
||||
init_data.add_vertex(Vec3f(-half_length, 0.0f, 0.0f));
|
||||
init_data.add_vertex(Vec3f(+half_length, 0.0f, 0.0f));
|
||||
}
|
||||
else if (i == Y) {
|
||||
init_data.add_vertex(Vec3f(target.x(), target.y() - half_length, target.z()));
|
||||
init_data.add_vertex(Vec3f(target.x(), target.y() + half_length, target.z()));
|
||||
init_data.add_vertex(Vec3f(0.0f, -half_length, 0.0f));
|
||||
init_data.add_vertex(Vec3f(0.0f, +half_length, 0.0f));
|
||||
}
|
||||
else {
|
||||
init_data.add_vertex(Vec3f(target.x(), target.y(), target.z() - half_length));
|
||||
init_data.add_vertex(Vec3f(target.x(), target.y(), target.z() + half_length));
|
||||
init_data.add_vertex(Vec3f(0.0f, 0.0f, -half_length));
|
||||
init_data.add_vertex(Vec3f(0.0f, 0.0f, +half_length));
|
||||
}
|
||||
|
||||
// indices
|
||||
init_data.add_ushort_line(0, 1);
|
||||
init_data.add_line(0, 1);
|
||||
|
||||
m_camera_target.axis[i].init_from(std::move(init_data));
|
||||
}
|
||||
|
@ -6109,7 +6108,7 @@ void GLCanvas3D::_render_camera_target()
|
|||
shader->start_using();
|
||||
#if ENABLE_GL_SHADERS_ATTRIBUTES
|
||||
const Camera& camera = wxGetApp().plater()->get_camera();
|
||||
shader->set_uniform("view_model_matrix", camera.get_view_matrix());
|
||||
shader->set_uniform("view_model_matrix", camera.get_view_matrix() * Geometry::assemble_transform(m_camera_target.target));
|
||||
shader->set_uniform("projection_matrix", camera.get_projection_matrix());
|
||||
#endif // ENABLE_GL_SHADERS_ATTRIBUTES
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
|
|
Loading…
Add table
Reference in a new issue