Main MRPT website > C++ reference for MRPT 1.9.9
Classes
mrpt::opengl::gl_utils Namespace Reference

Detailed Description

A set of auxiliary functions that can be called to render OpenGL primitives from MRPT or user code.

Classes

struct  TRenderInfo
 Information about the rendering process being issued. More...
 

Function Documentation

◆ checkOpenGLError()

void mrpt::opengl::gl_utils::checkOpenGLError ( )

◆ getCurrentRenderingInfo()

void mrpt::opengl::gl_utils::getCurrentRenderingInfo ( TRenderInfo ri)

Gather useful information on the render parameters.

It can be called from within the render() method of CRenderizable-derived classes, and the returned matrices can be used to determine whether a given point (lx,ly,lz) in local coordinates wrt the object being rendered falls within the screen or not:

TRenderInfo ri;
Eigen::Matrix<float,4,4> M= ri.proj_matrix * ri.model_matrix *
HomogeneousMatrix(lx,ly,lz);
const float rend_x = M(0,3)/M(3,3);
const float rend_y = M(1,3)/M(3,3);

where (rend_x,rend_y) are both in the range [-1,1].

It can be called from within the render() method of derived classes.

Definition at line 216 of file gl_utils.cpp.

References mrpt::opengl::gl_utils::TRenderInfo::camera_position, mrpt::opengl::gl_utils::TRenderInfo::full_matrix, GL_MODELVIEW_MATRIX, GL_PROJECTION_MATRIX, GL_VIEWPORT, glGetFloatv(), glGetIntegerv(), mrpt::opengl::gl_utils::TRenderInfo::model_matrix, MRPT_UNUSED_PARAM, mrpt::opengl::gl_utils::TRenderInfo::proj_matrix, mrpt::opengl::gl_utils::TRenderInfo::vp_height, mrpt::opengl::gl_utils::TRenderInfo::vp_width, mrpt::opengl::gl_utils::TRenderInfo::vp_x, mrpt::opengl::gl_utils::TRenderInfo::vp_y, mrpt::math::TPoint3Df::x, mrpt::math::TPoint3Df::y, and mrpt::math::TPoint3Df::z.

Referenced by mrpt::opengl::CPointCloudColoured::render(), and mrpt::opengl::CPointCloud::render().

◆ glDrawText()

mrpt::img::TPixelCoordf mrpt::opengl::gl_utils::glDrawText ( const std::string text,
const double  textScale,
enum TOpenGLFontStyle  style = NICE,
double  spacing = 1.5,
double  kerning = 0.1 
)

renders a string in GL using the current settings.

Font coordinates are +X along the line and +Y along the up direction of glyphs. The origin is at the top baseline at the left of the first character. Characters have a maximum size of 1. linefeed is interpreted as a new line and the start is offset in -Y direction by spacing . Individual characters are separated by kerning + plus their individual with.

Parameters
textstring to be rendered, unknown characters are replaced with '?'
textScaleThe size of the characters (default=1.0)
stylerendering style
spacingdistance between individual text lines
kerningdistance between characters
Note
This functions comes from libcvd (BSD, http://www.edwardrosten.com/cvd/ )

Definition at line 532 of file gl_utils.cpp.

References GL_MODELVIEW, glMatrixMode(), glPopMatrix(), glPushMatrix(), glScaled(), MRPT_UNUSED_PARAM, and THROW_EXCEPTION.

Referenced by mrpt::opengl::CColorBar::render_dl(), mrpt::opengl::CAxis::render_dl(), mrpt::opengl::CText3D::render_dl(), mrpt::opengl::CTextMessageCapable::render_text_messages(), and renderMessageBox().

◆ glGetExtends()

mrpt::img::TPixelCoordf mrpt::opengl::gl_utils::glGetExtends ( const std::string text,
const double  textScale,
double  spacing = 1.5,
double  kerning = 0.1 
)

returns the size of the bounding box of a text to be rendered, similar to glDrawText but without any visual output

Note
This functions comes from libcvd (BSD, http://www.edwardrosten.com/cvd/ )

Definition at line 553 of file gl_utils.cpp.

References MRPT_UNUSED_PARAM, THROW_EXCEPTION, mrpt::img::TPixelCoordf::x, and mrpt::img::TPixelCoordf::y.

Referenced by renderMessageBox().

◆ glGetFont()

const std::string & mrpt::opengl::gl_utils::glGetFont ( )

returns the name of the currently active font

Definition at line 523 of file gl_utils.cpp.

References THROW_EXCEPTION.

◆ glSetFont()

void mrpt::opengl::gl_utils::glSetFont ( const std::string fontname)

sets the font to use for future font rendering commands.

currently "sans", "serif" and "mono" are available.

Parameters
fontnamestring containing font name

Definition at line 514 of file gl_utils.cpp.

References MRPT_UNUSED_PARAM.

Referenced by mrpt::opengl::CColorBar::render_dl(), mrpt::opengl::CText3D::render_dl(), mrpt::opengl::CTextMessageCapable::render_text_messages(), and renderMessageBox().

◆ renderMessageBox()

void mrpt::opengl::gl_utils::renderMessageBox ( const float  msg_x,
const float  msg_y,
const float  msg_w,
const float  msg_h,
const std::string text,
float  text_scale,
const mrpt::img::TColor back_col = mrpt::img::TColor(0, 0, 50, 150),
const mrpt::img::TColor border_col = mrpt::img::TColor(0, 0, 0, 140),
const mrpt::img::TColor text_col = mrpt::img::TColor(255, 255, 255, 220),
const float  border_width = 4.0f,
const std::string text_font = std::string("sans"),
mrpt::opengl::TOpenGLFontStyle  text_style = mrpt::opengl::FILL,
const double  text_spacing = 1.5,
const double  text_kerning = 0.1 
)

Draws a message box with a centered (possibly multi-lined) text.

It consists of a filled rectangle with a frame around and the centered text in the middle.

The appearance of the box is highly configurable via parameters.

Parameters
[in]msg_x,msg_yThe left-lower corner coordinates, in ratio [0,1] of the viewport size. (0,0) if the left-bottom corner of the viewport.
[in]msg_w,msg_hThe width & height, in ratio [0,1] of the viewport size.
[in]textThe text to display. Multiple lines can be drawn with the '
' character.
[in]text_scaleSize of characters, in ration [0,1] of the viewport size. Note that this size may be scaled automatically reduced to fit the text withtin the rectangle of the message box.
[in]back_colColor of the rectangle background. Alpha can be <255 to enable transparency.
[in]border_colColor of the rectangle frame. Alpha can be <255 to enable transparency.
[in]text_colColor of the text background. Alpha can be <255 to enable transparency.
[in]border_widthWidth of the border, in pixels
[in]text_font,text_style,text_spacing,text_kerningSee mrpt::opengl::gl_utils::glDrawText()

Example (see directory: 'samples/display3D_custom_render'):

Definition at line 387 of file gl_utils.cpp.

References mrpt::img::TColor::A, mrpt::img::TColor::B, mrpt::img::TColor::G, GL_BLEND, GL_DEPTH_TEST, GL_LIGHTING, GL_LINE_LOOP, GL_MODELVIEW, GL_ONE_MINUS_SRC_ALPHA, GL_PROJECTION, GL_SRC_ALPHA, GL_TRIANGLE_FAN, GL_VIEWPORT, glBegin(), glBlendFunc(), glColor4ub(), glDisable(), glDrawText(), glEnable(), glEnd(), glGetExtends(), glGetIntegerv(), glLineWidth(), glLoadIdentity(), glMatrixMode(), glOrtho(), glPopMatrix(), glPushMatrix(), glSetFont(), glTranslatef(), glVertex2f(), min, MRPT_UNUSED_PARAM, mrpt::img::TColor::R, mrpt::img::TPixelCoordf::x, and mrpt::img::TPixelCoordf::y.

Referenced by mrpt::graphslam::CWindowObserver::OnEvent().

◆ renderQuadWithNormal()

void mrpt::opengl::gl_utils::renderQuadWithNormal ( const mrpt::math::TPoint3Df p1,
const mrpt::math::TPoint3Df p2,
const mrpt::math::TPoint3Df p3,
const mrpt::math::TPoint3Df p4 
)

Can be used by derived classes to draw a quad with a normal vector computed automatically - to be called within a glBegin()-glEnd() block.

Definition at line 205 of file gl_utils.cpp.

References renderTriangleWithNormal().

Referenced by mrpt::opengl::CFrustum::render_dl().

◆ renderSetOfObjects()

void mrpt::opengl::gl_utils::renderSetOfObjects ( const mrpt::opengl::CListOpenGLObjects objs)

For each object in the list:

  • checks visibility of each object
  • prepare the GL_MODELVIEW matrix according to its coordinates
  • call its ::render()
  • shows its name (if enabled).
Note
Used by COpenGLViewport, CSetOfObjects
  • checks visibility of each object
  • prepare the GL_MODELVIEW matrix according to its coordinates
  • call its ::render()
  • shows its name (if enabled).

Definition at line 35 of file gl_utils.cpp.

References checkOpenGLError(), mrpt::opengl::CRenderizable::getColorA(), mrpt::opengl::CRenderizable::getColorB(), mrpt::opengl::CRenderizable::getColorG(), mrpt::opengl::CRenderizable::getColorR(), mrpt::opengl::CRenderizable::getName(), mrpt::opengl::CRenderizable::getPoseRef(), mrpt::poses::CPose3D::getRotationMatrix(), mrpt::opengl::CRenderizable::getScaleX(), mrpt::opengl::CRenderizable::getScaleY(), mrpt::opengl::CRenderizable::getScaleZ(), GL_CURRENT_BIT, GL_CURRENT_RASTER_POSITION, GL_DEPTH_TEST, GL_LIGHTING_BIT, GL_MODELVIEW, glColor3f(), glColor4f(), glDisable(), glEnable(), glGetFloatv(), glMatrixMode(), glMultMatrixd(), glPopAttrib(), glPopMatrix(), glPushAttrib(), glPushMatrix(), glRasterPos3f(), glScalef(), mrpt::opengl::CRenderizable::isShowNameEnabled(), mrpt::opengl::CRenderizable::isVisible(), mrpt::poses::CPose3D::m_coords, MRPT_PROFILE_FUNC_START, MRPT_UNUSED_PARAM, R, mrpt::opengl::CRenderizable::render(), renderTextBitmap(), mrpt::system::os::sprintf(), and THROW_EXCEPTION.

Referenced by mrpt::opengl::CSetOfObjects::render(), and mrpt::opengl::COpenGLViewport::render().

◆ renderTextBitmap()

void mrpt::opengl::gl_utils::renderTextBitmap ( const char *  str,
void fontStyle 
)

This method is safe for calling from within ::render() methods.

See also
renderTextBitmap

Definition at line 258 of file gl_utils.cpp.

References MRPT_UNUSED_PARAM.

Referenced by mrpt::opengl::CText::render(), renderSetOfObjects(), and mrpt::opengl::CRenderizable::renderTextBitmap().

◆ renderTriangleWithNormal() [1/2]

void mrpt::opengl::gl_utils::renderTriangleWithNormal ( const mrpt::math::TPoint3D p1,
const mrpt::math::TPoint3D p2,
const mrpt::math::TPoint3D p3 
)

Can be used by derived classes to draw a triangle with a normal vector computed automatically - to be called within a glBegin()-glEnd() block.

Definition at line 157 of file gl_utils.cpp.

References glNormal3f(), glVertex3f(), MRPT_UNUSED_PARAM, mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

Referenced by mrpt::opengl::CBox::render_dl(), and renderQuadWithNormal().

◆ renderTriangleWithNormal() [2/2]

void mrpt::opengl::gl_utils::renderTriangleWithNormal ( const mrpt::math::TPoint3Df p1,
const mrpt::math::TPoint3Df p2,
const mrpt::math::TPoint3Df p3 
)

◆ textBitmapWidth()

int mrpt::opengl::gl_utils::textBitmapWidth ( const std::string str,
mrpt::opengl::TOpenGLFont  font = mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24 
)

Return the exact width in pixels for a given string, as will be rendered by renderTextBitmap().

See also
renderTextBitmap

Definition at line 301 of file gl_utils.cpp.

References aux_mrptfont2glutfont(), and MRPT_UNUSED_PARAM.

Referenced by mrpt::opengl::CRenderizable::textBitmapWidth().

mrpt::opengl::gl_utils::getCurrentRenderingInfo
void getCurrentRenderingInfo(TRenderInfo &ri)
Gather useful information on the render parameters.
Definition: gl_utils.cpp:216



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST