MRPT  2.0.3
CRenderizableShaderWireFrame.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 
16 namespace mrpt::opengl
17 {
18 /** Renderizable generic renderer for objects using the wireframe shader.
19  *
20  * \sa opengl::COpenGLScene
21  *
22  * \ingroup mrpt_opengl_grp
23  */
25 {
27 
28  public:
29  CRenderizableShaderWireFrame() = default;
31 
32  virtual shader_list_t requiredShaders() const override
33  {
35  }
36  void render(const RenderContext& rc) const override;
37  void renderUpdateBuffers() const override;
38 
39  /** Must be implemented in derived classes to update the geometric entities
40  * to be drawn in "m_*_buffer" fields. */
41  virtual void onUpdateBuffers_Wireframe() = 0;
42 
43  void setLineWidth(float w)
44  {
45  m_lineWidth = w;
47  }
48  float getLineWidth() const { return m_lineWidth; }
49  void enableAntiAliasing(bool enable = true)
50  {
51  m_antiAliasing = enable;
53  }
54  bool isAntiAliasingEnabled() const { return m_antiAliasing; }
55 
56  // See base docs
57  void freeOpenGLResources() override
58  {
61  m_vao.destroy();
62  }
63 
64  protected:
65  float m_lineWidth = 1.0f;
66  bool m_antiAliasing = false;
67  mutable std::vector<mrpt::math::TPoint3Df> m_vertex_buffer_data;
68  mutable std::vector<mrpt::img::TColor> m_color_buffer_data;
69 
70  private:
73 };
74 
75 } // namespace mrpt::opengl
COpenGLBuffer.h
mrpt::opengl::CRenderizable::notifyChange
void notifyChange() const
Call to enable calling renderUpdateBuffers() before the next render() rendering iteration.
Definition: CRenderizable.h:315
mrpt::opengl::CRenderizableShaderWireFrame::getLineWidth
float getLineWidth() const
Definition: CRenderizableShaderWireFrame.h:48
mrpt::opengl::CRenderizableShaderWireFrame::requiredShaders
virtual shader_list_t requiredShaders() const override
Returns the ID of the OpenGL shader program required to render this class.
Definition: CRenderizableShaderWireFrame.h:32
mrpt::opengl::CRenderizableShaderWireFrame::m_vao
COpenGLVertexArrayObject m_vao
Definition: CRenderizableShaderWireFrame.h:72
mrpt::opengl::COpenGLVertexArrayObject
A wrapper for an OpenGL vertex array object (VAO).
Definition: COpenGLVertexArrayObject.h:21
mrpt::opengl::CRenderizableShaderWireFrame::m_antiAliasing
bool m_antiAliasing
Definition: CRenderizableShaderWireFrame.h:66
mrpt::opengl::CRenderizable
The base class of 3D objects that can be directly rendered through OpenGL.
Definition: CRenderizable.h:48
mrpt::opengl::CRenderizableShaderWireFrame::m_color_buffer_data
std::vector< mrpt::img::TColor > m_color_buffer_data
Definition: CRenderizableShaderWireFrame.h:68
mrpt::opengl::CRenderizableShaderWireFrame
Renderizable generic renderer for objects using the wireframe shader.
Definition: CRenderizableShaderWireFrame.h:24
mrpt::opengl::CRenderizableShaderWireFrame::m_colorBuffer
COpenGLBuffer m_colorBuffer
Definition: CRenderizableShaderWireFrame.h:71
mrpt::opengl::CRenderizableShaderWireFrame::~CRenderizableShaderWireFrame
virtual ~CRenderizableShaderWireFrame()
mrpt::opengl::CRenderizableShaderWireFrame::onUpdateBuffers_Wireframe
virtual void onUpdateBuffers_Wireframe()=0
Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" f...
mrpt::opengl::CRenderizableShaderWireFrame::freeOpenGLResources
void freeOpenGLResources() override
Free opengl buffers.
Definition: CRenderizableShaderWireFrame.h:57
mrpt::opengl::CRenderizableShaderWireFrame::m_vertexBuffer
COpenGLBuffer m_vertexBuffer
Definition: CRenderizableShaderWireFrame.h:71
mrpt::opengl::CRenderizableShaderWireFrame::setLineWidth
void setLineWidth(float w)
Definition: CRenderizableShaderWireFrame.h:43
mrpt::opengl::DefaultShaderID::WIREFRAME
static constexpr shader_id_t WIREFRAME
Definition: DefaultShaders.h:25
mrpt::opengl::CRenderizableShaderWireFrame::m_vertex_buffer_data
std::vector< mrpt::math::TPoint3Df > m_vertex_buffer_data
Definition: CRenderizableShaderWireFrame.h:67
mrpt::opengl::CRenderizableShaderWireFrame::isAntiAliasingEnabled
bool isAntiAliasingEnabled() const
Definition: CRenderizableShaderWireFrame.h:54
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
mrpt::opengl::CRenderizableShaderWireFrame::render
void render(const RenderContext &rc) const override
Implements the rendering of 3D objects in each class derived from CRenderizable.
Definition: CRenderizableShaderWireFrame.cpp:52
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::CRenderizableShaderWireFrame::m_lineWidth
float m_lineWidth
Definition: CRenderizableShaderWireFrame.h:65
mrpt::opengl::CRenderizableShaderWireFrame::CRenderizableShaderWireFrame
CRenderizableShaderWireFrame()=default
mrpt::opengl::COpenGLBuffer
A wrapper for an OpenGL buffer object.
Definition: COpenGLBuffer.h:21
mrpt::opengl::CRenderizableShaderWireFrame::enableAntiAliasing
void enableAntiAliasing(bool enable=true)
Definition: CRenderizableShaderWireFrame.h:49
COpenGLVertexArrayObject.h
mrpt::opengl::shader_list_t
std::vector< shader_id_t > shader_list_t
A list of shader IDs.
Definition: Shader.h:26
mrpt::opengl::CRenderizableShaderWireFrame::renderUpdateBuffers
void renderUpdateBuffers() const override
Called whenever m_outdatedBuffers is true: used to re-generate OpenGL vertex buffers,...
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



Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Fri May 15 23:51:15 UTC 2020