59 CRenderizableDisplayList::CRenderizableDisplayList()
72 obj.dls_to_delete_cs.lock();
73 obj.dls_to_delete.push_back(
m_dl);
74 obj.dls_to_delete_cs.unlock();
82 #if MRPT_HAS_OPENGL_GLUT 94 if (!
obj.dls_to_delete.empty())
96 obj.dls_to_delete_cs.lock();
97 #if MRPT_HAS_OPENGL_GLUT 100 obj.dls_to_delete.clear();
101 obj.dls_to_delete_cs.unlock();
108 std::cerr <<
"glGenLists: Error" << std::endl;
116 std::cerr <<
"glNewList: Error" << std::endl;
123 std::cerr <<
"glEndList: Error" << std::endl;
bool m_dl_recreate
If using display lists, this is true when the list must be updated (the object changes, it's the first rendering, etc...).
GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range)
std::vector< unsigned int > dls_to_delete
static TAuxDLData * m_pInstance
void render() const override
Render the object, regenerating the display list if needed, otherwise just calling it...
The base class of 3D objects that can be directly rendered through OpenGL.
IMPLEMENTS_VIRTUAL_SERIALIZABLE(CRenderizableDisplayList, CRenderizable, mrpt::opengl) void deleteSingleton()
GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range)
virtual bool should_skip_display_list_cache() const
Optional: If the object has some state in which creating a display list is NOT preferred over direct ...
GLsizei GLsizei GLuint * obj
unsigned int m_dl
Display list ID, for derived classes that want to use it (it's automatically deleted and freed on des...
virtual void render_dl() const =0
Derived classes must implement this method to the render the object.
A renderizable object suitable for rendering with OpenGL's display lists.
GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define INVALID_DISPLAY_LIST_ID
std::recursive_mutex dls_to_delete_cs
static TAuxDLData & getSingleton()
GLAPI GLenum GLAPIENTRY glGetError(void)
The namespace for 3D scene representation and rendering.
GLAPI void GLAPIENTRY glEndList(void)
~CRenderizableDisplayList() override
GLAPI void GLAPIENTRY glCallList(GLuint list)