mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-10 08:17:51 -06:00
Few small fixes
This commit is contained in:
parent
ac001f8816
commit
8dc82e7a8d
5 changed files with 14 additions and 60 deletions
|
@ -5584,13 +5584,13 @@ void GCodeViewer::render_statistics()
|
||||||
|
|
||||||
ImGuiWrapper& imgui = *wxGetApp().imgui();
|
ImGuiWrapper& imgui = *wxGetApp().imgui();
|
||||||
|
|
||||||
auto add_time = [this, &imgui](const std::string& label, int64_t time) {
|
auto add_time = [&imgui](const std::string& label, int64_t time) {
|
||||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, label);
|
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, label);
|
||||||
ImGui::SameLine(offset);
|
ImGui::SameLine(offset);
|
||||||
imgui.text(std::to_string(time) + " ms (" + get_time_dhms(static_cast<float>(time) * 0.001f) + ")");
|
imgui.text(std::to_string(time) + " ms (" + get_time_dhms(static_cast<float>(time) * 0.001f) + ")");
|
||||||
};
|
};
|
||||||
|
|
||||||
auto add_memory = [this, &imgui](const std::string& label, int64_t memory) {
|
auto add_memory = [&imgui](const std::string& label, int64_t memory) {
|
||||||
auto format_string = [memory](const std::string& units, float value) {
|
auto format_string = [memory](const std::string& units, float value) {
|
||||||
return std::to_string(memory) + " bytes (" +
|
return std::to_string(memory) + " bytes (" +
|
||||||
Slic3r::float_to_string_decimal_point(float(memory) * value, 3)
|
Slic3r::float_to_string_decimal_point(float(memory) * value, 3)
|
||||||
|
@ -5613,7 +5613,7 @@ void GCodeViewer::render_statistics()
|
||||||
imgui.text(format_string("GB", inv_gb));
|
imgui.text(format_string("GB", inv_gb));
|
||||||
};
|
};
|
||||||
|
|
||||||
auto add_counter = [this, &imgui](const std::string& label, int64_t counter) {
|
auto add_counter = [&imgui](const std::string& label, int64_t counter) {
|
||||||
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, label);
|
imgui.text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, label);
|
||||||
ImGui::SameLine(offset);
|
ImGui::SameLine(offset);
|
||||||
imgui.text(std::to_string(counter));
|
imgui.text(std::to_string(counter));
|
||||||
|
|
|
@ -7002,14 +7002,6 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale()
|
||||||
void GLCanvas3D::_render_overlays()
|
void GLCanvas3D::_render_overlays()
|
||||||
{
|
{
|
||||||
glsafe(::glDisable(GL_DEPTH_TEST));
|
glsafe(::glDisable(GL_DEPTH_TEST));
|
||||||
glsafe(::glPushMatrix());
|
|
||||||
glsafe(::glLoadIdentity());
|
|
||||||
// ensure that the textures are renderered inside the frustrum
|
|
||||||
const Camera& camera = wxGetApp().plater()->get_camera();
|
|
||||||
glsafe(::glTranslated(0.0, 0.0, -(camera.get_near_z() + 0.10)));
|
|
||||||
// ensure that the overlay fits the frustrum near z plane
|
|
||||||
double gui_scale = camera.get_gui_scale();
|
|
||||||
glsafe(::glScaled(gui_scale, gui_scale, 1.0));
|
|
||||||
|
|
||||||
_check_and_update_toolbar_icon_scale();
|
_check_and_update_toolbar_icon_scale();
|
||||||
|
|
||||||
|
@ -7081,8 +7073,6 @@ void GLCanvas3D::_render_overlays()
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
m_labels.render(sorted_instances);
|
m_labels.render(sorted_instances);
|
||||||
|
|
||||||
glsafe(::glPopMatrix());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::_render_style_editor()
|
void GLCanvas3D::_render_style_editor()
|
||||||
|
|
|
@ -417,7 +417,7 @@ void GLModel::init_from(const indexed_triangle_set& its)
|
||||||
|
|
||||||
// update bounding box
|
// update bounding box
|
||||||
for (size_t i = 0; i < vertices_count(); ++i) {
|
for (size_t i = 0; i < vertices_count(); ++i) {
|
||||||
m_bounding_box.merge(m_render_data.geometry.extract_position_3(i).cast<double>());
|
m_bounding_box.merge(data.extract_position_3(i).cast<double>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -460,7 +460,7 @@ void GLModel::init_from(const Polygons& polygons, float z)
|
||||||
|
|
||||||
// update bounding box
|
// update bounding box
|
||||||
for (size_t i = 0; i < vertices_count(); ++i) {
|
for (size_t i = 0; i < vertices_count(); ++i) {
|
||||||
m_bounding_box.merge(m_render_data.geometry.extract_position_3(i).cast<double>());
|
m_bounding_box.merge(data.extract_position_3(i).cast<double>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -707,31 +707,32 @@ bool GLModel::send_to_gpu()
|
||||||
// indices
|
// indices
|
||||||
glsafe(::glGenBuffers(1, &m_render_data.ibo_id));
|
glsafe(::glGenBuffers(1, &m_render_data.ibo_id));
|
||||||
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_render_data.ibo_id));
|
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_render_data.ibo_id));
|
||||||
|
const size_t indices_count = data.indices.size();
|
||||||
if (m_render_data.vertices_count <= 256) {
|
if (m_render_data.vertices_count <= 256) {
|
||||||
// convert indices to unsigned char to save gpu memory
|
// convert indices to unsigned char to save gpu memory
|
||||||
std::vector<unsigned char> reduced_indices(data.indices.size());
|
std::vector<unsigned char> reduced_indices(indices_count);
|
||||||
for (size_t i = 0; i < data.indices.size(); ++i) {
|
for (size_t i = 0; i < indices_count; ++i) {
|
||||||
reduced_indices[i] = (unsigned char)data.indices[i];
|
reduced_indices[i] = (unsigned char)data.indices[i];
|
||||||
}
|
}
|
||||||
data.index_type = Geometry::EIndexType::UBYTE;
|
data.index_type = Geometry::EIndexType::UBYTE;
|
||||||
glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, reduced_indices.size() * sizeof(unsigned char), reduced_indices.data(), GL_STATIC_DRAW));
|
glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_count * sizeof(unsigned char), reduced_indices.data(), GL_STATIC_DRAW));
|
||||||
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
||||||
}
|
}
|
||||||
else if (m_render_data.vertices_count <= 65536) {
|
else if (m_render_data.vertices_count <= 65536) {
|
||||||
// convert indices to unsigned short to save gpu memory
|
// convert indices to unsigned short to save gpu memory
|
||||||
std::vector<unsigned short> reduced_indices(data.indices.size());
|
std::vector<unsigned short> reduced_indices(indices_count);
|
||||||
for (size_t i = 0; i < data.indices.size(); ++i) {
|
for (size_t i = 0; i < data.indices.size(); ++i) {
|
||||||
reduced_indices[i] = (unsigned short)data.indices[i];
|
reduced_indices[i] = (unsigned short)data.indices[i];
|
||||||
}
|
}
|
||||||
data.index_type = Geometry::EIndexType::USHORT;
|
data.index_type = Geometry::EIndexType::USHORT;
|
||||||
glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, reduced_indices.size() * sizeof(unsigned short), reduced_indices.data(), GL_STATIC_DRAW));
|
glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_count * sizeof(unsigned short), reduced_indices.data(), GL_STATIC_DRAW));
|
||||||
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.indices_size_bytes(), data.indices.data(), GL_STATIC_DRAW));
|
glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.indices_size_bytes(), data.indices.data(), GL_STATIC_DRAW));
|
||||||
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
||||||
}
|
}
|
||||||
m_render_data.indices_count = indices_count();
|
m_render_data.indices_count = indices_count;
|
||||||
data.indices = std::vector<unsigned int>();
|
data.indices = std::vector<unsigned int>();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -157,13 +157,9 @@ void GLGizmoRotate::on_render()
|
||||||
render_grabber_connection(color, radius_changed);
|
render_grabber_connection(color, radius_changed);
|
||||||
shader->stop_using();
|
shader->stop_using();
|
||||||
}
|
}
|
||||||
glsafe(::glPushMatrix());
|
|
||||||
transform_to_local(selection);
|
|
||||||
|
|
||||||
render_grabber(box);
|
render_grabber(box);
|
||||||
render_grabber_extension(box, false);
|
render_grabber_extension(box, false);
|
||||||
|
|
||||||
glsafe(::glPopMatrix());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGizmoRotate::on_render_for_picking()
|
void GLGizmoRotate::on_render_for_picking()
|
||||||
|
@ -445,12 +441,12 @@ Transform3d GLGizmoRotate::local_transform(const Selection& selection) const
|
||||||
{
|
{
|
||||||
case X:
|
case X:
|
||||||
{
|
{
|
||||||
ret = Geometry::assemble_transform(Vec3d::Zero(), Vec3d(0.0, 0.5 * PI, 0.0)) * Geometry::assemble_transform(Vec3d::Zero(), Vec3d(0.0, 0.0, -0.5 * PI));
|
ret = Geometry::assemble_transform(Vec3d::Zero(), 0.5 * PI * Vec3d::UnitY()) * Geometry::assemble_transform(Vec3d::Zero(), -0.5 * PI * Vec3d::UnitZ());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Y:
|
case Y:
|
||||||
{
|
{
|
||||||
ret = Geometry::assemble_transform(Vec3d::Zero(), Vec3d(0.0, 0.0, -0.5 * PI)) * Geometry::assemble_transform(Vec3d::Zero(), Vec3d(0.0, -0.5 * PI, 0.0));
|
ret = Geometry::assemble_transform(Vec3d::Zero(), -0.5 * PI * Vec3d::UnitZ()) * Geometry::assemble_transform(Vec3d::Zero(), -0.5 * PI * Vec3d::UnitY());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -467,38 +463,6 @@ Transform3d GLGizmoRotate::local_transform(const Selection& selection) const
|
||||||
return Geometry::assemble_transform(m_center) * ret;
|
return Geometry::assemble_transform(m_center) * ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGizmoRotate::transform_to_local(const Selection& selection) const
|
|
||||||
{
|
|
||||||
glsafe(::glTranslated(m_center.x(), m_center.y(), m_center.z()));
|
|
||||||
|
|
||||||
if (selection.is_single_volume() || selection.is_single_modifier() || selection.requires_local_axes()) {
|
|
||||||
const Transform3d orient_matrix = selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_transformation().get_matrix(true, false, true, true);
|
|
||||||
glsafe(::glMultMatrixd(orient_matrix.data()));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (m_axis)
|
|
||||||
{
|
|
||||||
case X:
|
|
||||||
{
|
|
||||||
glsafe(::glRotatef(90.0f, 0.0f, 1.0f, 0.0f));
|
|
||||||
glsafe(::glRotatef(-90.0f, 0.0f, 0.0f, 1.0f));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Y:
|
|
||||||
{
|
|
||||||
glsafe(::glRotatef(-90.0f, 0.0f, 0.0f, 1.0f));
|
|
||||||
glsafe(::glRotatef(-90.0f, 0.0f, 1.0f, 0.0f));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
case Z:
|
|
||||||
{
|
|
||||||
// no rotation
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Vec3d GLGizmoRotate::mouse_position_in_local_plane(const Linef3& mouse_ray, const Selection& selection) const
|
Vec3d GLGizmoRotate::mouse_position_in_local_plane(const Linef3& mouse_ray, const Selection& selection) const
|
||||||
{
|
{
|
||||||
double half_pi = 0.5 * double(PI);
|
double half_pi = 0.5 * double(PI);
|
||||||
|
|
|
@ -87,7 +87,6 @@ private:
|
||||||
|
|
||||||
Transform3d local_transform(const Selection& selection) const;
|
Transform3d local_transform(const Selection& selection) const;
|
||||||
|
|
||||||
void transform_to_local(const Selection& selection) const;
|
|
||||||
// returns the intersection of the mouse ray with the plane perpendicular to the gizmo axis, in local coordinate
|
// returns the intersection of the mouse ray with the plane perpendicular to the gizmo axis, in local coordinate
|
||||||
Vec3d mouse_position_in_local_plane(const Linef3& mouse_ray, const Selection& selection) const;
|
Vec3d mouse_position_in_local_plane(const Linef3& mouse_ray, const Selection& selection) const;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue