void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0, 0); // glPolygonMode(GL_FRONT, GL_LINE); glEnable(GL_LIGHTING); glPolygonMode(GL_FRONT, GL_FILL); render_quads(); if((flag & FLAG_GRID) || (flag & FLAG_CIRCLE)) { glDisable(GL_LIGHTING); glColor3f(1,1,1); glEnable(GL_POLYGON_OFFSET_LINE); glPolygonOffset(1,1); glPolygonMode(GL_FRONT, GL_LINE); if(flag & FLAG_GRID) render_quads(); if(flag & FLAG_CIRCLE) render_circle(tan(DEG2RAD(cutoff))); } /* don't wait! * start processing buffered OpenGL routines */ glFlush (); }
void GLGizmoRotate::on_render(const Selection& selection) const { if (!m_grabbers[0].enabled) return; const BoundingBoxf3& box = selection.get_bounding_box(); std::string axis; switch (m_axis) { case X: { axis = "X"; break; } case Y: { axis = "Y"; break; } case Z: { axis = "Z"; break; } } if (!m_dragging && (m_hover_id == 0)) set_tooltip(axis); else if (m_dragging) set_tooltip(axis + ": " + format((float)Geometry::rad2deg(m_angle), 4) + "\u00B0"); else { m_center = box.center(); m_radius = Offset + box.radius(); m_snap_coarse_in_radius = m_radius / 3.0f; m_snap_coarse_out_radius = 2.0f * m_snap_coarse_in_radius; m_snap_fine_in_radius = m_radius; m_snap_fine_out_radius = m_radius * (1.0f + ScaleLongTooth); } glsafe(::glEnable(GL_DEPTH_TEST)); glsafe(::glPushMatrix()); transform_to_local(selection); glsafe(::glLineWidth((m_hover_id != -1) ? 2.0f : 1.5f)); glsafe(::glColor3fv((m_hover_id != -1) ? m_drag_color : m_highlight_color)); render_circle(); if (m_hover_id != -1) { render_scale(); render_snap_radii(); render_reference_radius(); } glsafe(::glColor3fv(m_highlight_color)); if (m_hover_id != -1) render_angle(); render_grabber(box); render_grabber_extension(box, false); glsafe(::glPopMatrix()); }