Exemple #1
0
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 ();
}
Exemple #2
0
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());
}