Hello, I have created a opengl app which use “glCallList” function to draw polygons.
When the Window is going drawing the scene I create and compile a lot of glNewLists for draw faster polygonal elements.
A working thread verify if there elements can be deleted, It use “glDeleteLists” functions.
But, I see that the memory has not released it the proccess window. Why ???
CMapFile::setupPolygon()
{
if (ixNewList)
{
glCallList(ixNewList);
return;
}
…
ixNewList = (GLuint)pElement; // pElement == (pointer of a graphic element)
glNewList(ixNewList, GL_COMPILE_AND_EXECUTE);
// … draw/compile polygons.
GLUtesselator * p_objTesseler = gluNewTess();
if (!p_objTesseler) {if (ixNewList) glDeleteLists(ixNewList, 1); ixNewList = 0; return;}
gluTessCallback(p_objTesseler, GLU_TESS_BEGIN, (TessFuncPtrDef)glBegin);
gluTessCallback(p_objTesseler, GLU_TESS_VERTEX, (TessFuncPtrDef)glVertex3dv);
gluTessCallback(p_objTesseler, GLU_TESS_EDGE_FLAG, (TessFuncPtrDef)glEdgeFlag);
gluTessCallback(p_objTesseler, GLU_TESS_END, (TessFuncPtrDef)glEnd);
gluTessBeginPolygon(p_objTesseler, NULL);
gluTessBeginContour(p_objTesseler);
for (i = 0; i < pElement->NumPoints; i++) gluTessVertex(p_objTesseler, (GLdouble *)(pElement->pPoints+i), (GLdouble *)(pElement->pPoints+i));
gluTessEndContour(p_objTesseler);
gluTessEndPolygon(p_objTesseler);
gluDeleteTess(p_objTesseler);
glEndList();
}
and a thread verify Elements for clear memory …
CMapFile::clearPolygon()
{
if (ixNewList) {glDeleteLists(ixNewList, 1); ixNewList = 0;}
}
thank you very much