MRPT  2.0.3
CRenderizableShaderPoints.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 points shader.
19  *
20  * All points may have the same point size (see setPointSize()) or a dynamic,
21  * depth-dependent size to emulate the effect of larger points when looked
22  * closely (see enableVariablePointSize()).
23  *
24  * In the latter case, point size is computed in the shader as:
25  *
26  * gl_PointSize = vertexPointSize +
27  * variablePointSize_k/(variablePointSize_DepthScale*gl_Position.z + 0.01);
28  *
29  * where the paramters vertexPointSize, variablePointSize_k, and
30  * variablePointSize_DepthScale can be set in this class via setPointSize(),
31  * setVariablePointSize_k(), and setVariablePointSize_DepthScale(),
32  * respectively.
33  *
34  * \sa opengl::COpenGLScene
35  *
36  * \ingroup mrpt_opengl_grp
37  */
39 {
41 
42  public:
43  CRenderizableShaderPoints() = default;
44  virtual ~CRenderizableShaderPoints() override;
45 
46  virtual shader_list_t requiredShaders() const override
47  {
48  return {DefaultShaderID::POINTS};
49  }
50  void render(const RenderContext& rc) const override;
51  void renderUpdateBuffers() const override;
52 
53  /** Must be implemented in derived classes to update the geometric entities
54  * to be drawn in "m_*_buffer" fields. */
55  virtual void onUpdateBuffers_Points() = 0;
56 
57  /** By default is 1.0. \sa enableVariablePointSize() */
58  inline void setPointSize(float p) { m_pointSize = p; }
59  inline float getPointSize() const { return m_pointSize; }
60 
61  /** Enable/disable variable eye distance-dependent point size (default=true)
62  */
63  inline void enableVariablePointSize(bool enable = true)
64  {
65  m_variablePointSize = enable;
66  }
67  inline bool isEnabledVariablePointSize() const
68  {
69  return m_variablePointSize;
70  }
71  /** see CRenderizableShaderPoints for a discussion of this parameter. */
74 
75  /** see CRenderizableShaderPoints for a discussion of this parameter. */
77  {
79  }
81  {
83  }
84 
85  // See base docs
86  void freeOpenGLResources() override
87  {
90  m_vao.destroy();
91  }
92 
93  protected:
94  mutable std::vector<mrpt::math::TPoint3Df> m_vertex_buffer_data;
95  mutable std::vector<mrpt::img::TColor> m_color_buffer_data;
96 
97  float m_pointSize = 1.0f;
98  bool m_variablePointSize = true;
99  float m_variablePointSize_K = 0.1f;
101 
104 
105  private:
108 };
109 
110 } // namespace mrpt::opengl
COpenGLBuffer.h
mrpt::opengl::CRenderizableShaderPoints::m_colorBuffer
COpenGLBuffer m_colorBuffer
Definition: CRenderizableShaderPoints.h:106
mrpt::opengl::CRenderizableShaderPoints::~CRenderizableShaderPoints
virtual ~CRenderizableShaderPoints() override
mrpt::opengl::CRenderizableShaderPoints::enableVariablePointSize
void enableVariablePointSize(bool enable=true)
Enable/disable variable eye distance-dependent point size (default=true)
Definition: CRenderizableShaderPoints.h:63
mrpt::opengl::COpenGLVertexArrayObject
A wrapper for an OpenGL vertex array object (VAO).
Definition: COpenGLVertexArrayObject.h:21
mrpt::opengl::CRenderizableShaderPoints::render
void render(const RenderContext &rc) const override
Implements the rendering of 3D objects in each class derived from CRenderizable.
Definition: CRenderizableShaderPoints.cpp:52
mrpt::opengl::CRenderizableShaderPoints::isEnabledVariablePointSize
bool isEnabledVariablePointSize() const
Definition: CRenderizableShaderPoints.h:67
mrpt::opengl::CRenderizable
The base class of 3D objects that can be directly rendered through OpenGL.
Definition: CRenderizable.h:48
mrpt::opengl::CRenderizableShaderPoints::getPointSize
float getPointSize() const
Definition: CRenderizableShaderPoints.h:59
mrpt::opengl::CRenderizableShaderPoints::getVariablePointSize_DepthScale
float getVariablePointSize_DepthScale() const
Definition: CRenderizableShaderPoints.h:80
mrpt::opengl::CRenderizableShaderPoints::requiredShaders
virtual shader_list_t requiredShaders() const override
Returns the ID of the OpenGL shader program required to render this class.
Definition: CRenderizableShaderPoints.h:46
mrpt::opengl::CRenderizableShaderPoints::setVariablePointSize_k
void setVariablePointSize_k(float v)
see CRenderizableShaderPoints for a discussion of this parameter.
Definition: CRenderizableShaderPoints.h:72
out
mrpt::vision::TStereoCalibResults out
Definition: chessboard_stereo_camera_calib_unittest.cpp:25
mrpt::opengl::CRenderizableShaderPoints::m_pointSize
float m_pointSize
Definition: CRenderizableShaderPoints.h:97
mrpt::serialization::CArchive
Virtual base class for "archives": classes abstracting I/O streams.
Definition: CArchive.h:54
mrpt::opengl::CRenderizableShaderPoints::onUpdateBuffers_Points
virtual void onUpdateBuffers_Points()=0
Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" f...
mrpt::opengl::CRenderizableShaderPoints::m_vao
COpenGLVertexArrayObject m_vao
Definition: CRenderizableShaderPoints.h:107
mrpt::opengl::CRenderizableShaderPoints::getVariablePointSize_k
float getVariablePointSize_k() const
Definition: CRenderizableShaderPoints.h:73
mrpt::opengl::CRenderizableShaderPoints::params_deserialize
void params_deserialize(mrpt::serialization::CArchive &in)
Definition: CRenderizableShaderPoints.cpp:115
mrpt::opengl::CRenderizableShaderPoints::renderUpdateBuffers
void renderUpdateBuffers() const override
Called whenever m_outdatedBuffers is true: used to re-generate OpenGL vertex buffers,...
mrpt::opengl::CRenderizableShaderPoints::m_vertexBuffer
COpenGLBuffer m_vertexBuffer
Definition: CRenderizableShaderPoints.h:106
mrpt::opengl::CRenderizableShaderPoints::setPointSize
void setPointSize(float p)
By default is 1.0.
Definition: CRenderizableShaderPoints.h:58
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
mrpt::opengl::CRenderizableShaderPoints::CRenderizableShaderPoints
CRenderizableShaderPoints()=default
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::CRenderizableShaderPoints::freeOpenGLResources
void freeOpenGLResources() override
Free opengl buffers.
Definition: CRenderizableShaderPoints.h:86
mrpt::opengl::COpenGLBuffer
A wrapper for an OpenGL buffer object.
Definition: COpenGLBuffer.h:21
COpenGLVertexArrayObject.h
mrpt::opengl::CRenderizableShaderPoints::m_variablePointSize
bool m_variablePointSize
Definition: CRenderizableShaderPoints.h:98
mrpt::opengl::CRenderizableShaderPoints::m_variablePointSize_DepthScale
float m_variablePointSize_DepthScale
Definition: CRenderizableShaderPoints.h:100
mrpt::opengl::CRenderizableShaderPoints::params_serialize
void params_serialize(mrpt::serialization::CArchive &out) const
Definition: CRenderizableShaderPoints.cpp:108
mrpt::opengl::CRenderizableShaderPoints
Renderizable generic renderer for objects using the points shader.
Definition: CRenderizableShaderPoints.h:38
mrpt::opengl::shader_list_t
std::vector< shader_id_t > shader_list_t
A list of shader IDs.
Definition: Shader.h:26
mrpt::opengl::CRenderizableShaderPoints::m_vertex_buffer_data
std::vector< mrpt::math::TPoint3Df > m_vertex_buffer_data
Definition: CRenderizableShaderPoints.h:94
mrpt::opengl::CRenderizableShaderPoints::m_color_buffer_data
std::vector< mrpt::img::TColor > m_color_buffer_data
Definition: CRenderizableShaderPoints.h:95
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::DefaultShaderID::POINTS
static constexpr shader_id_t POINTS
Definition: DefaultShaders.h:24
mrpt::opengl::CRenderizableShaderPoints::setVariablePointSize_DepthScale
void setVariablePointSize_DepthScale(float v)
see CRenderizableShaderPoints for a discussion of this parameter.
Definition: CRenderizableShaderPoints.h:76
mrpt::opengl::CRenderizableShaderPoints::m_variablePointSize_K
float m_variablePointSize_K
Definition: CRenderizableShaderPoints.h:99



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