23 CFBORender::CFBORender(
24 unsigned int width,
unsigned int height,
const bool skip_glut_window)
27 m_win_used(!skip_glut_window),
28 m_default_bk_color(.6f, .6f, .6f, 1)
30 #if MRPT_HAS_OPENCV && MRPT_HAS_OPENGL_GLUT
37 if (!glutGet(GLUT_INIT_STATE))
41 char* argv[1] = {
nullptr};
42 glutInit(&argc, argv);
46 m_win = glutCreateWindow(
"CFBORender");
55 #ifdef MRPT_OS_WINDOWS
59 "glDeleteFramebuffersEXT");
64 "glFramebufferTexture2DEXT");
86 #if defined(GL_TEXTURE_RECTANGLE_NV)
88 #elif defined(GL_TEXTURE_RECTANGLE_ARB)
120 #if MRPT_HAS_OPENGL_GLUT
158 #if MRPT_HAS_OPENCV && MRPT_HAS_OPENGL_GLUT
165 buffer.getChannelCount() != 3 ||
buffer.isOriginTopLeft() !=
false)
187 #if MRPT_HAS_OPENGL_GLUT
234 #if MRPT_HAS_OPENCV && MRPT_HAS_OPENGL_GLUT
250 #if defined(GL_TEXTURE_RECTANGLE_NV)
252 #elif defined(GL_TEXTURE_RECTANGLE_ARB)
283 #if MRPT_HAS_OPENGL_GLUT
287 const GLubyte* extensions =
nullptr;
292 where = (
GLubyte*)strchr(extension,
' ');
293 if (where || *extension ==
'\0')
return 0;
302 where = (
GLubyte*)strstr((
const char*)
start, extension);
304 terminator = where + strlen(extension);
305 if (where ==
start || *(where - 1) ==
' ')
306 if (*terminator ==
' ' || *terminator ==
'\0')
return 1;
A camera: if added to a scene, the viewpoint defined by this camera will be used instead of the camer...
void getFrame(const COpenGLScene &scene, mrpt::utils::CImage &image)
Render the scene and get the rendered rgb image.
void getFrame2(const COpenGLScene &scene, mrpt::utils::CImage &image)
Render the scene and get the rendered rgb image.
CCamera & getCamera(const COpenGLScene &scene)
Get a reference to the scene camera.
virtual ~CFBORender()
Destructor.
void resize(unsigned int width, unsigned int height)
Resize the rendering canvas size.
mrpt::utils::TColorf m_default_bk_color
void setCamera(const COpenGLScene &scene, const CCamera &camera)
Change the scene camera.
int isExtensionSupported(const char *extension)
Provide information on Framebuffer object extension.
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
COpenGLViewport::Ptr getViewport(const std::string &viewportName=std::string("main")) const
Returns the viewport with the given name, or nullptr if it does not exist; note that the default view...
void render() const
Render this scene.
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 r...
A class for storing images as grayscale or RGB bitmaps.
#define glDeleteFramebuffersEXT
GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint *textures)
#define GL_COLOR_ATTACHMENT0_EXT
void(GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers)
#define glBindFramebufferEXT
void(GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers)
void(GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer)
#define glGenFramebuffersEXT
#define GL_TEXTURE_RECTANGLE_NV
#define GL_TEXTURE_RECTANGLE_EXT
GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture)
GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint *textures)
#define glFramebufferTexture2DEXT
GLAPI void GLAPIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
#define GL_TEXTURE_RECTANGLE_ARB
GLAPI void GLAPIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
#define GL_FRAMEBUFFER_EXT
GLAPI const GLubyte *GLAPIENTRY glGetString(GLenum name)
GLAPI void GLAPIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
void(GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
GLenum GLsizei GLsizei height
#define ASSERT_EQUAL_(__A, __B)
#define THROW_EXCEPTION(msg)
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
The namespace for 3D scene representation and rendering.
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values,...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.