summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--progs/demos/isosurf.c91
1 files changed, 52 insertions, 39 deletions
diff --git a/progs/demos/isosurf.c b/progs/demos/isosurf.c
index 437cdf4043..160886f9ce 100644
--- a/progs/demos/isosurf.c
+++ b/progs/demos/isosurf.c
@@ -1,4 +1,4 @@
-/* $Id: isosurf.c,v 1.13 2001/10/04 19:14:26 kschultz Exp $ */
+/* $Id: isosurf.c,v 1.14 2002/01/04 09:47:17 gareth Exp $ */
/*
* Display an isosurface of 3-D wind speed volume.
@@ -39,34 +39,36 @@
#include "readtex.c" /* I know, this is a hack. KW: me too. */
#define TEXTURE_FILE "../images/reflect.rgb"
-#define LIT 0x1
-#define UNLIT 0x2
-#define REFLECT 0x10
-#define POINT_FILTER 0x40
-#define LINEAR_FILTER 0x80
-#define GLVERTEX 0x100
-#define DRAW_ELTS 0x4
-#define DRAW_ARRAYS 0x200
-#define ARRAY_ELT 0x400
-#define LOCKED 0x800
-#define UNLOCKED 0x8
-#define IMMEDIATE 0x1000
-#define DISPLAYLIST 0x2000000
-#define SHADE_SMOOTH 0x2000
-#define SHADE_FLAT 0x4000
-#define TRIANGLES 0x8000
-#define STRIPS 0x10000
-#define POINTS 0x20000
-#define USER_CLIP 0x40000
-#define NO_USER_CLIP 0x80000
-#define MATERIALS 0x100000
-#define NO_MATERIALS 0x200000
-#define FOG 0x400000
-#define NO_FOG 0x800000
-#define QUIT 0x1000000
-#define GLINFO 0x4000000
-#define STIPPLE 0x8000000
-#define NO_STIPPLE 0x20
+#define LIT 0x00000001
+#define UNLIT 0x00000002
+#define REFLECT 0x00000004
+#define POINT_FILTER 0x00000008
+#define LINEAR_FILTER 0x00000010
+#define GLVERTEX 0x00000020
+#define DRAW_ELTS 0x00000040
+#define DRAW_ARRAYS 0x00000080
+#define ARRAY_ELT 0x00000100
+#define LOCKED 0x00000200
+#define UNLOCKED 0x00000400
+#define IMMEDIATE 0x00000800
+#define DISPLAYLIST 0x00001000
+#define SHADE_SMOOTH 0x00002000
+#define SHADE_FLAT 0x00004000
+#define TRIANGLES 0x00008000
+#define STRIPS 0x00010000
+#define POINTS 0x00020000
+#define USER_CLIP 0x00040000
+#define NO_USER_CLIP 0x00080000
+#define MATERIALS 0x00100000
+#define NO_MATERIALS 0x00200000
+#define FOG 0x00400000
+#define NO_FOG 0x00800000
+#define QUIT 0x01000000
+#define GLINFO 0x02000000
+#define STIPPLE 0x04000000
+#define NO_STIPPLE 0x08000000
+#define POLYGON_FILL 0x10000000
+#define POLYGON_LINE 0x20000000
#define LIGHT_MASK (LIT|UNLIT|REFLECT)
#define FILTER_MASK (POINT_FILTER|LINEAR_FILTER)
@@ -79,6 +81,7 @@
#define SHADE_MASK (SHADE_SMOOTH|SHADE_FLAT)
#define FOG_MASK (FOG|NO_FOG)
#define STIPPLE_MASK (STIPPLE|NO_STIPPLE)
+#define POLYGON_MASK (POLYGON_FILL|POLYGON_LINE)
#define MAXVERTS 10000
static GLuint maxverts = MAXVERTS;
@@ -144,7 +147,7 @@ static void read_surface( char *filename )
static void print_flags( const char *msg, GLuint flags )
{
fprintf(stderr,
- "%s (0x%x): %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ "%s (0x%x): %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
msg, flags,
(flags & GLVERTEX) ? "glVertex, " : "",
(flags & DRAW_ARRAYS) ? "glDrawArrays, " : "",
@@ -162,7 +165,8 @@ static void print_flags( const char *msg, GLuint flags )
(flags & USER_CLIP) ? "user_clip, " : "",
(flags & MATERIALS) ? "materials, " : "",
(flags & FOG) ? "fog, " : "",
- (flags & STIPPLE) ? "stipple, " : "");
+ (flags & STIPPLE) ? "stipple, " : "",
+ (flags & POLYGON_LINE) ? "polygon mode line, " : "");
}
@@ -684,28 +688,34 @@ static void ModeMenu(int m)
if (CHANGED(state, m, FOG_MASK)) {
UPDATE(state, m, FOG_MASK);
- if (m & FOG)
- {
+ if (m & FOG) {
glEnable(GL_FOG);
}
- else
- {
+ else {
glDisable(GL_FOG);
}
}
if (CHANGED(state, m, STIPPLE_MASK)) {
UPDATE(state, m, STIPPLE_MASK);
- if (m & STIPPLE)
- {
+ if (m & STIPPLE) {
glEnable(GL_POLYGON_STIPPLE);
}
- else
- {
+ else {
glDisable(GL_POLYGON_STIPPLE);
}
}
+ if (CHANGED(state, m, POLYGON_MASK)) {
+ UPDATE(state, m, POLYGON_MASK);
+ if (m & POLYGON_FILL) {
+ glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+ }
+ else {
+ glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+ }
+ }
+
#ifdef GL_EXT_vertex_array
if (CHANGED(state, m, (LOCK_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)))
{
@@ -1077,6 +1087,9 @@ int main(int argc, char **argv)
glutAddMenuEntry("Stipple", STIPPLE);
glutAddMenuEntry("No Stipple", NO_STIPPLE);
glutAddMenuEntry("", 0);
+ glutAddMenuEntry("Polygon Mode Fill", POLYGON_FILL);
+ glutAddMenuEntry("Polygon Mode Line", POLYGON_LINE);
+ glutAddMenuEntry("", 0);
glutAddMenuEntry("Point Filtered", POINT_FILTER);
glutAddMenuEntry("Linear Filtered", LINEAR_FILTER);
glutAddMenuEntry("", 0);