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... | |
Functions | |
Miscellaneous rendering methods | |
void OPENGL_IMPEXP | renderSetOfObjects (const mrpt::opengl::CListOpenGLObjects &objs) |
For each object in the list: | |
void OPENGL_IMPEXP | checkOpenGLError () |
Checks glGetError and throws an exception if an error situation is found. | |
void OPENGL_IMPEXP | 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. | |
void OPENGL_IMPEXP | renderTriangleWithNormal (const mrpt::math::TPoint3Df &p1, const mrpt::math::TPoint3Df &p2, const mrpt::math::TPoint3Df &p3) |
void OPENGL_IMPEXP | 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. | |
void OPENGL_IMPEXP | getCurrentRenderingInfo (TRenderInfo &ri) |
Gather useful information on the render parameters. | |
void OPENGL_IMPEXP | 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::utils::TColor &back_col=mrpt::utils::TColor(0, 0, 50, 150), const mrpt::utils::TColor &border_col=mrpt::utils::TColor(0, 0, 0, 140), const mrpt::utils::TColor &text_col=mrpt::utils::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. | |
OpenGL bitmapped 2D fonts | |
void OPENGL_IMPEXP | renderTextBitmap (const char *str, void *fontStyle) |
This method is safe for calling from within ::render() methods. | |
int OPENGL_IMPEXP | 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(). | |
OpenGL vector 3D fonts | |
void OPENGL_IMPEXP | glSetFont (const std::string &fontname) |
sets the font to use for future font rendering commands. | |
const OPENGL_IMPEXP std::string & | glGetFont () |
returns the name of the currently active font | |
mrpt::utils::TPixelCoordf OPENGL_IMPEXP | 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. | |
mrpt::utils::TPixelCoordf OPENGL_IMPEXP | 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 | |
void OPENGL_IMPEXP mrpt::opengl::gl_utils::checkOpenGLError | ( | ) |
Checks glGetError and throws an exception if an error situation is found.
void OPENGL_IMPEXP 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:
where (rend_x,rend_y) are both in the range [-1,1].
mrpt::utils::TPixelCoordf OPENGL_IMPEXP 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.
text | string to be rendered, unknown characters are replaced with '?' |
textScale | The size of the characters (default=1.0) |
style | rendering style |
spacing | distance between individual text lines |
kerning | distance between characters |
mrpt::utils::TPixelCoordf OPENGL_IMPEXP 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
const OPENGL_IMPEXP std::string & mrpt::opengl::gl_utils::glGetFont | ( | ) |
returns the name of the currently active font
void OPENGL_IMPEXP 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.
fontname | string containing font name |
void OPENGL_IMPEXP 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::utils::TColor & | back_col = mrpt::utils::TColor(0, 0, 50, 150) , |
||
const mrpt::utils::TColor & | border_col = mrpt::utils::TColor(0, 0, 0, 140) , |
||
const mrpt::utils::TColor & | text_col = mrpt::utils::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.
[in] | msg_x,msg_y | The 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_h | The width & height, in ratio [0,1] of the viewport size. |
[in] | text | The text to display. Multiple lines can be drawn with the ' ' character. |
[in] | text_scale | Size 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_col | Color of the rectangle background. Alpha can be <255 to enable transparency. |
[in] | border_col | Color of the rectangle frame. Alpha can be <255 to enable transparency. |
[in] | text_col | Color of the text background. Alpha can be <255 to enable transparency. |
[in] | border_width | Width of the border, in pixels |
[in] | text_font,text_style,text_spacing,text_kerning | See mrpt::opengl::gl_utils::glDrawText() |
Example (see directory: 'samples/display3D_custom_render'):
void OPENGL_IMPEXP 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.
void OPENGL_IMPEXP mrpt::opengl::gl_utils::renderSetOfObjects | ( | const mrpt::opengl::CListOpenGLObjects & | objs | ) |
For each object in the list:
void OPENGL_IMPEXP mrpt::opengl::gl_utils::renderTextBitmap | ( | const char * | str, |
void * | fontStyle | ||
) |
This method is safe for calling from within ::render() methods.
void OPENGL_IMPEXP 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.
void OPENGL_IMPEXP mrpt::opengl::gl_utils::renderTriangleWithNormal | ( | const mrpt::math::TPoint3Df & | p1, |
const mrpt::math::TPoint3Df & | p2, | ||
const mrpt::math::TPoint3Df & | p3 | ||
) |
int OPENGL_IMPEXP 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().
Page generated by Doxygen 1.9.7 for MRPT 1.4.0 SVN: at Tue Jun 27 17:12:06 UTC 2023 |