MRPT  2.0.3
CRenderizableShaderText.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
15 #include <mrpt/opengl/TTriangle.h>
16 
17 namespace mrpt::opengl
18 {
19 /** Renderizable generic renderer for objects using the "text shader".
20  *
21  * \sa opengl::COpenGLScene
22  *
23  * \ingroup mrpt_opengl_grp
24  */
25 class CRenderizableShaderText : public virtual CRenderizable
26 {
28 
29  public:
30  CRenderizableShaderText() = default;
31  virtual ~CRenderizableShaderText() override;
32 
33  virtual shader_list_t requiredShaders() const override
34  {
35  return {DefaultShaderID::TEXT};
36  }
37  void render(const RenderContext& rc) const override;
38  void renderUpdateBuffers() const override;
39 
40  /** Must be implemented in derived classes to update the geometric entities
41  * to be drawn in "m_*_buffer" fields. */
42  virtual void onUpdateBuffers_Text() = 0;
43 
44  // See base docs
45  void freeOpenGLResources() override
46  {
51  m_vao.destroy();
52  }
53 
54  protected:
55  /** List of triangles \sa TTriangle */
56  mutable std::vector<mrpt::opengl::TTriangle> m_triangles;
57 
58  /** List of lines */
59  mutable std::vector<mrpt::math::TPoint3Df> m_vertex_buffer_data;
60  mutable std::vector<mrpt::img::TColor> m_color_buffer_data;
61 
62  private:
66 };
67 
68 } // namespace mrpt::opengl
COpenGLBuffer.h
mrpt::opengl::CRenderizableShaderText::m_linesVertexBuffer
COpenGLBuffer m_linesVertexBuffer
Definition: CRenderizableShaderText.h:64
mrpt::opengl::COpenGLVertexArrayObject
A wrapper for an OpenGL vertex array object (VAO).
Definition: COpenGLVertexArrayObject.h:21
mrpt::opengl::CRenderizableShaderText::~CRenderizableShaderText
virtual ~CRenderizableShaderText() override
mrpt::opengl::CRenderizable
The base class of 3D objects that can be directly rendered through OpenGL.
Definition: CRenderizable.h:48
mrpt::opengl::CRenderizableShaderText::m_trianglesBuffer
COpenGLBuffer m_trianglesBuffer
Definition: CRenderizableShaderText.h:63
mrpt::opengl::DefaultShaderID::TEXT
static constexpr shader_id_t TEXT
Definition: DefaultShaders.h:26
mrpt::opengl::CRenderizableShaderText::m_vertex_buffer_data
std::vector< mrpt::math::TPoint3Df > m_vertex_buffer_data
List of lines.
Definition: CRenderizableShaderText.h:59
mrpt::opengl::CRenderizableShaderText::m_vao
COpenGLVertexArrayObject m_vao
Definition: CRenderizableShaderText.h:65
mrpt::opengl::CRenderizableShaderText::renderUpdateBuffers
void renderUpdateBuffers() const override
Called whenever m_outdatedBuffers is true: used to re-generate OpenGL vertex buffers,...
TTriangle.h
mrpt::opengl::CRenderizableShaderText::requiredShaders
virtual shader_list_t requiredShaders() const override
Returns the ID of the OpenGL shader program required to render this class.
Definition: CRenderizableShaderText.h:33
mrpt::opengl::COpenGLVertexArrayObject::destroy
void destroy()
Automatically called upon destructor, no need for the user to call it in normal situations.
Definition: COpenGLVertexArrayObject.h:40
CRenderizable.h
DEFINE_VIRTUAL_SERIALIZABLE
#define DEFINE_VIRTUAL_SERIALIZABLE(class_name)
This declaration must be inserted in virtual CSerializable classes definition:
Definition: CSerializable.h:171
mrpt::opengl::CRenderizableShaderText::render
void render(const RenderContext &rc) const override
Implements the rendering of 3D objects in each class derived from CRenderizable.
Definition: CRenderizableShaderText.cpp:60
mrpt::opengl::COpenGLBuffer
A wrapper for an OpenGL buffer object.
Definition: COpenGLBuffer.h:21
mrpt::opengl::CRenderizableShaderText::m_trianglesColorBuffer
COpenGLBuffer m_trianglesColorBuffer
Definition: CRenderizableShaderText.h:63
mrpt::opengl::CRenderizableShaderText::m_color_buffer_data
std::vector< mrpt::img::TColor > m_color_buffer_data
Definition: CRenderizableShaderText.h:60
mrpt::opengl::CRenderizableShaderText::onUpdateBuffers_Text
virtual void onUpdateBuffers_Text()=0
Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" f...
mrpt::opengl::CRenderizableShaderText::CRenderizableShaderText
CRenderizableShaderText()=default
COpenGLVertexArrayObject.h
mrpt::opengl::CRenderizableShaderText
Renderizable generic renderer for objects using the "text shader".
Definition: CRenderizableShaderText.h:25
mrpt::opengl::shader_list_t
std::vector< shader_id_t > shader_list_t
A list of shader IDs.
Definition: Shader.h:26
mrpt::opengl::CRenderizableShaderText::freeOpenGLResources
void freeOpenGLResources() override
Free opengl buffers.
Definition: CRenderizableShaderText.h:45
mrpt::opengl::CRenderizableShaderText::m_linesColorBuffer
COpenGLBuffer m_linesColorBuffer
Definition: CRenderizableShaderText.h:64
mrpt::opengl
The namespace for 3D scene representation and rendering.
Definition: CGlCanvasBase.h:13
mrpt::opengl::COpenGLBuffer::destroy
void destroy()
Automatically called upon destructor, no need for the user to call it in normal situations.
Definition: COpenGLBuffer.h:68
mrpt::opengl::CRenderizableShaderText::m_triangles
std::vector< mrpt::opengl::TTriangle > m_triangles
List of triangles.
Definition: CRenderizableShaderText.h:56



Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Fri May 15 15:49:54 UTC 2020