A class for rendering 3D scenes off-screen directly into an image using OpenGL extensions (glext).
To define a background color, set it in the scene's "main" viewport.
You can add overlaid text messages, see base class CTextMessageCapable
Definition at line 29 of file CFBORender.h.
#include <mrpt/opengl/CFBORender.h>
Public Member Functions | |
CFBORender (unsigned int width=800, unsigned int height=600, const bool skip_glut_window=false) | |
Constructor. More... | |
virtual | ~CFBORender () |
Destructor. More... | |
void | setCamera (const COpenGLScene &scene, const CCamera &camera) |
Change the scene camera. More... | |
CCamera & | getCamera (const COpenGLScene &scene) |
Get a reference to the scene camera. More... | |
void | getFrame (const COpenGLScene &scene, mrpt::utils::CImage &image) |
Render the scene and get the rendered rgb image. More... | |
void | getFrame2 (const COpenGLScene &scene, mrpt::utils::CImage &image) |
Render the scene and get the rendered rgb image. More... | |
void | resize (unsigned int width, unsigned int height) |
Resize the rendering canvas size. More... | |
const mrpt::utils::TColorf & | getBackgroundColor () const |
Get the default background color (unles an COpenGLViewport defines a custom color) More... | |
void | setBackgroundColor (const mrpt::utils::TColorf &col) |
Set the default background color (unles an COpenGLViewport defines a custom color) More... | |
void | clearTextMessages () |
void | addTextMessage (const double x_frac, const double y_frac, const std::string &text, const mrpt::utils::TColorf &color=mrpt::utils::TColorf(1.0, 1.0, 1.0), const size_t unique_index=0, const mrpt::opengl::TOpenGLFont font=mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24) |
Add 2D text messages overlapped to the 3D rendered scene. More... | |
void | addTextMessage (const double x_frac, const double y_frac, const std::string &text, const mrpt::utils::TColorf &color, const std::string &font_name, const double font_size, const mrpt::opengl::TOpenGLFontStyle font_style=mrpt::opengl::NICE, const size_t unique_index=0, const double font_spacing=1.5, const double font_kerning=0.1, const bool has_shadow=false, const mrpt::utils::TColorf &shadow_color=mrpt::utils::TColorf(0, 0, 0)) |
overload with more font parameters - refer to mrpt::opengl::gl_utils::glDrawText() More... | |
bool | updateTextMessage (const size_t unique_index, const std::string &text) |
Just updates the text of a given text message, without touching the other parameters. More... | |
Protected Member Functions | |
int | isExtensionSupported (const char *extension) |
Provide information on Framebuffer object extension. More... | |
void | render_text_messages (const int w, const int h) const |
Renders the messages to the current opengl rendering context (to be called OUT of MRPT mrpt::opengl render() methods ). More... | |
Protected Attributes | |
int | m_win |
int | m_width |
int | m_height |
unsigned int | m_fbo |
unsigned int | m_tex |
bool | m_win_used |
mrpt::utils::TColorf | m_default_bk_color |
std::map< size_t, mrpt::opengl::T2DTextData > | m_2D_texts |
CFBORender::CFBORender | ( | unsigned int | width = 800 , |
unsigned int | height = 600 , |
||
const bool | skip_glut_window = false |
||
) |
Constructor.
[in] | skip_glut_window | Should be set to true only if another GUI windows already exist with an associated OpenGL context. If left to false, a hidden GLUT window will be created. |
Definition at line 23 of file CFBORender.cpp.
References ASSERT_, GL_COLOR_ATTACHMENT0_EXT, GL_FRAMEBUFFER_EXT, GL_RGB, GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_RECTANGLE_NV, GL_UNSIGNED_BYTE, glBindFramebufferEXT, glBindTexture(), glDeleteFramebuffersEXT, glFramebufferTexture2DEXT, glGenFramebuffersEXT, glGenTextures(), glTexImage2D(), glViewport(), isExtensionSupported(), m_fbo, m_height, m_tex, m_width, m_win, m_win_used, MRPT_END, MRPT_START, and THROW_EXCEPTION.
|
virtual |
Destructor.
Definition at line 108 of file CFBORender.cpp.
References glDeleteFramebuffersEXT, glDeleteTextures(), m_fbo, m_tex, m_win, and m_win_used.
|
inherited |
Add 2D text messages overlapped to the 3D rendered scene.
The string will remain displayed in the 3D window until it's changed with subsequent calls to this same method, or all the texts are cleared with clearTextMessages().
x | The X position, interpreted as absolute pixels from the left if X>=1, absolute pixels from the left if X<0 or as a width factor if in the range [0,1[. |
y | The Y position, interpreted as absolute pixels from the bottom if Y>=1, absolute pixels from the top if Y<0 or as a height factor if in the range [0,1[. |
text | The text string to display. |
color | The text color. For example: TColorf(1.0,1.0,1.0) |
unique_index | An "index" for this text message, so that subsequent calls with the same index will overwrite this text message instead of creating new ones. |
You'll need to refresh the display manually with forceRepaint().
Definition at line 120 of file CTextMessageCapable.cpp.
References mrpt::opengl::TFontParams::color, mrpt::opengl::TFontParams::font, mrpt::opengl::T2DTextData::text, mrpt::opengl::T2DTextData::x, and mrpt::opengl::T2DTextData::y.
|
inherited |
overload with more font parameters - refer to mrpt::opengl::gl_utils::glDrawText()
Definition at line 156 of file CTextMessageCapable.cpp.
References mrpt::opengl::TFontParams::color, mrpt::opengl::TFontParams::draw_shadow, mrpt::opengl::TFontParams::font, mrpt::opengl::MRPT_GLUT_BITMAP_NONE, mrpt::opengl::TFontParams::shadow_color, mrpt::opengl::T2DTextData::text, mrpt::opengl::TFontParams::vfont_kerning, mrpt::opengl::TFontParams::vfont_name, mrpt::opengl::TFontParams::vfont_scale, mrpt::opengl::TFontParams::vfont_spacing, mrpt::opengl::TFontParams::vfont_style, mrpt::opengl::T2DTextData::x, and mrpt::opengl::T2DTextData::y.
|
inherited |
Definition at line 114 of file CTextMessageCapable.cpp.
|
inline |
Get the default background color (unles an COpenGLViewport defines a custom color)
Definition at line 62 of file CFBORender.h.
CCamera & CFBORender::getCamera | ( | const COpenGLScene & | scene | ) |
Get a reference to the scene camera.
Definition at line 133 of file CFBORender.cpp.
References mrpt::opengl::COpenGLScene::getViewport(), MRPT_END, and MRPT_START.
void CFBORender::getFrame | ( | const COpenGLScene & | scene, |
mrpt::utils::CImage & | image | ||
) |
Render the scene and get the rendered rgb image.
Resizes the image buffer if it is necessary.
Definition at line 146 of file CFBORender.cpp.
References getFrame2(), m_height, m_width, MRPT_END, MRPT_START, and MRPT_UNUSED_PARAM.
void CFBORender::getFrame2 | ( | const COpenGLScene & | scene, |
mrpt::utils::CImage & | image | ||
) |
Render the scene and get the rendered rgb image.
Does not resize the image buffer. MANDATORY: The image origin must be bottom left.
Definition at line 174 of file CFBORender.cpp.
References mrpt::utils::TColorf::A, ASSERT_EQUAL_, mrpt::utils::TColorf::B, mrpt::utils::TColorf::G, GL_BGR_EXT, GL_FRAMEBUFFER_EXT, GL_UNSIGNED_BYTE, glBindFramebufferEXT, glClearColor(), glReadPixels(), m_default_bk_color, m_fbo, m_height, m_width, MRPT_END, MRPT_START, MRPT_UNUSED_PARAM, mrpt::utils::TColorf::R, mrpt::opengl::COpenGLScene::render(), and mrpt::opengl::CTextMessageCapable::render_text_messages().
Referenced by getFrame().
|
protected |
Provide information on Framebuffer object extension.
Definition at line 261 of file CFBORender.cpp.
References GL_EXTENSIONS, glGetString(), MRPT_END, MRPT_START, and MRPT_UNUSED_PARAM.
Referenced by CFBORender().
|
protectedinherited |
Renders the messages to the current opengl rendering context (to be called OUT of MRPT mrpt::opengl render() methods ).
(w,h) are the dimensions of the rendering area in pixels.
Definition at line 25 of file CTextMessageCapable.cpp.
References mrpt::opengl::FILL, GL_DEPTH_TEST, GL_MATRIX_MODE, GL_MODELVIEW, GL_PROJECTION, glColor3f(), glDisable(), mrpt::opengl::gl_utils::glDrawText(), glEnable(), glGetIntegerv(), glLoadIdentity(), glMatrixMode(), glOrtho(), glPopMatrix(), glPushMatrix(), mrpt::opengl::gl_utils::glSetFont(), glTranslatef(), mrpt::opengl::MRPT_GLUT_BITMAP_HELVETICA_10, mrpt::opengl::MRPT_GLUT_BITMAP_HELVETICA_12, mrpt::opengl::MRPT_GLUT_BITMAP_HELVETICA_18, mrpt::opengl::MRPT_GLUT_BITMAP_NONE, mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_10, mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24, and MRPT_UNUSED_PARAM.
Referenced by getFrame2().
void CFBORender::resize | ( | unsigned int | width, |
unsigned int | height | ||
) |
Resize the rendering canvas size.
Definition at line 216 of file CFBORender.cpp.
References GL_FRAMEBUFFER_EXT, GL_RGB, GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_RECTANGLE_NV, GL_UNSIGNED_BYTE, glBindFramebufferEXT, glBindTexture(), glTexImage2D(), glViewport(), m_fbo, m_height, m_tex, m_width, MRPT_END, MRPT_START, and MRPT_UNUSED_PARAM.
|
inline |
Set the default background color (unles an COpenGLViewport defines a custom color)
Definition at line 65 of file CFBORender.h.
void CFBORender::setCamera | ( | const COpenGLScene & | scene, |
const CCamera & | camera | ||
) |
Change the scene camera.
Definition at line 121 of file CFBORender.cpp.
References mrpt::opengl::COpenGLScene::getViewport(), MRPT_END, and MRPT_START.
|
inherited |
Just updates the text of a given text message, without touching the other parameters.
Definition at line 142 of file CTextMessageCapable.cpp.
|
protectedinherited |
Definition at line 27 of file CTextMessageCapable.h.
|
protected |
Definition at line 71 of file CFBORender.h.
Referenced by getFrame2().
|
protected |
Definition at line 69 of file CFBORender.h.
Referenced by CFBORender(), getFrame2(), resize(), and ~CFBORender().
|
protected |
Definition at line 68 of file CFBORender.h.
Referenced by CFBORender(), getFrame(), getFrame2(), and resize().
|
protected |
Definition at line 69 of file CFBORender.h.
Referenced by CFBORender(), resize(), and ~CFBORender().
|
protected |
Definition at line 68 of file CFBORender.h.
Referenced by CFBORender(), getFrame(), getFrame2(), and resize().
|
protected |
Definition at line 68 of file CFBORender.h.
Referenced by CFBORender(), and ~CFBORender().
|
protected |
Definition at line 70 of file CFBORender.h.
Referenced by CFBORender(), and ~CFBORender().
Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |