X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_geometry.c;h=d12b3f65f83e269dd3753aa8c4c3b0c91900c646;hb=6b8566e1d152df1b58136f3d3b861d2e94bde9df;hp=8d64ca34dfbc1d3bf3f93889d85b0bfc32646432;hpb=8353830076a254bcaeb71625d61fc283a2b7802c;p=freeglut diff --git a/src/fg_geometry.c b/src/fg_geometry.c index 8d64ca3..d12b3f6 100644 --- a/src/fg_geometry.c +++ b/src/fg_geometry.c @@ -29,6 +29,9 @@ #include "fg_internal.h" /* + * + * Need more types of polyhedra? See CPolyhedron in MRPT + * * TODO BEFORE THE STABLE RELEASE: * * See fghTetrahedron @@ -67,25 +70,32 @@ * useWireMode controls the drawing of solids (false) or wire frame * versions (TRUE) of the geometry you pass */ -static void fghDrawGeometry(GLenum vertexMode, GLdouble* vertices, GLdouble* normals, GLsizei numVertices, GLboolean useWireMode) +static void fghDrawGeometry(GLenum vertexMode, GLdouble *vertices, GLdouble *normals, GLboolean *edgeFlags, GLsizei numVertices, GLboolean useWireMode) { if (useWireMode) { glPushAttrib(GL_POLYGON_BIT); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glDisable(GL_CULL_FACE); } if (1) { glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); + if (edgeFlags) + glEnableClientState(GL_EDGE_FLAG_ARRAY); glVertexPointer(3, GL_DOUBLE, 0, vertices); glNormalPointer(GL_DOUBLE, 0, normals); + if (edgeFlags) + glEdgeFlagPointer(0,edgeFlags); glDrawArrays(vertexMode, 0, numVertices); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); + if (edgeFlags) + glDisableClientState(GL_EDGE_FLAG_ARRAY); } else { @@ -93,6 +103,7 @@ static void fghDrawGeometry(GLenum vertexMode, GLdouble* vertices, GLdouble* nor glBegin(vertexMode); for(i=0; i