From 977a9f1e6ba981d8851d1ff9fd72459ef5eac3f8 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Fri, 16 Mar 2012 11:06:23 +0000 Subject: [PATCH] cube now done with triangles, internal edges on each face hidden with edge flag git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1157 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/fg_geometry.c | 100 +++++++++++++++++++--------- 1 file changed, 67 insertions(+), 33 deletions(-) diff --git a/freeglut/freeglut/src/fg_geometry.c b/freeglut/freeglut/src/fg_geometry.c index 8d64ca3..a24a805 100644 --- a/freeglut/freeglut/src/fg_geometry.c +++ b/freeglut/freeglut/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,7 +70,7 @@ * 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) { @@ -79,13 +82,19 @@ static void fghDrawGeometry(GLenum vertexMode, GLdouble* vertices, GLdouble* nor { 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 +102,7 @@ static void fghDrawGeometry(GLenum vertexMode, GLdouble* vertices, GLdouble* nor glBegin(vertexMode); for(i=0; i