60 CRenderizableDisplayList::CRenderizableDisplayList()
73 obj.dls_to_delete_cs.lock();
74 obj.dls_to_delete.push_back(
m_dl);
75 obj.dls_to_delete_cs.unlock();
83 #if MRPT_HAS_OPENGL_GLUT 95 if (!
obj.dls_to_delete.empty())
97 obj.dls_to_delete_cs.lock();
98 #if MRPT_HAS_OPENGL_GLUT 99 for (
size_t i = 0; i <
obj.dls_to_delete.size(); i++)
102 obj.dls_to_delete.clear();
103 obj.dls_to_delete_cs.unlock();
110 std::cerr <<
"glGenLists: Error" << std::endl;
118 std::cerr <<
"glNewList: Error" << std::endl;
125 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...).
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL.
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.
virtual ~CRenderizableDisplayList()
GLAPI void GLAPIENTRY glEndList(void)
GLAPI void GLAPIENTRY glCallList(GLuint list)