diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-11-22 10:05:02 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-11-22 10:05:02 (GMT) |
commit | 9a7baf37d83ae772a3e059a902d796f66604c7fe (patch) | |
tree | 0c67ca051b7ad361334abc2b0b51d32c49a7df0b | |
parent | f3d2fedc0931a91575ab8ff109e26b144426fd55 (diff) |
Clifford Wolf:
Added CGAL patch with gluTess combine hotfix
git-svn-id: http://svn.clifford.at/openscad/trunk@136 b57f626f-c46c-0410-a088-ec61d464b74c
-rw-r--r-- | CGAL-OGL-Tess-Combine-Fix.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/CGAL-OGL-Tess-Combine-Fix.patch b/CGAL-OGL-Tess-Combine-Fix.patch new file mode 100644 index 0000000..2a4ad1a --- /dev/null +++ b/CGAL-OGL-Tess-Combine-Fix.patch @@ -0,0 +1,43 @@ +--- CGAL-3.4/include/CGAL/Nef_3/OGL_helper.h ++++ CGAL-3.4/include/CGAL/Nef_3/OGL_helper.h +@@ -243,6 +243,23 @@ + glVertex3dv(pc); + } + ++ inline void CGAL_GLU_TESS_CALLBACK combineCallback(GLdouble coords[3], GLvoid *d[4], GLfloat w[4], GLvoid **dataOut) ++ { ++ static std::list<GLdouble*> pcache; ++ if (dataOut) { ++ GLdouble *n = new GLdouble[3]; ++ n[0] = coords[0]; ++ n[1] = coords[1]; ++ n[2] = coords[2]; ++ pcache.push_back(n); ++ *dataOut = n; ++ } else { ++ for (std::list<GLdouble*>::const_iterator i = pcache.begin(); i != pcache.end(); i++) ++ delete[] *i; ++ pcache.clear(); ++ } ++ } ++ + + enum { SNC_AXES}; + enum { SNC_BOUNDARY, SNC_SKELETON }; +@@ -376,6 +393,8 @@ + GLUtesselator* tess_ = gluNewTess(); + gluTessCallback(tess_, GLenum(GLU_TESS_VERTEX_DATA), + (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &vertexCallback); ++ gluTessCallback(tess_, GLenum(GLU_TESS_COMBINE), ++ (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &combineCallback); + gluTessCallback(tess_, GLenum(GLU_TESS_BEGIN), + (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &beginCallback); + gluTessCallback(tess_, GLenum(GLU_TESS_END), +@@ -410,6 +429,7 @@ + gluTessEndPolygon(tess_); + // CGAL_NEF_TRACEN("End Polygon"); + gluDeleteTess(tess_); ++ combineCallback(NULL, NULL, NULL, NULL); + } + + void construct_axes() const |