Demos (master): tri-edgeflag-array: test glEdgeFlagPointer()
Brian Paul
brianp at kemper.freedesktop.org
Tue Nov 2 14:30:05 UTC 2010
Module: Demos
Branch: master
Commit: 18a67fd7ab5ebf69297df1bebbabb923c1dd252e
URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=18a67fd7ab5ebf69297df1bebbabb923c1dd252e
Author: Brian Paul <brianp at vmware.com>
Date: Tue Nov 2 08:29:53 2010 -0600
tri-edgeflag-array: test glEdgeFlagPointer()
---
src/trivial/Makefile.am | 1 +
src/trivial/tri-edgeflag-array.c | 119 ++++++++++++++++++++++++++++++++++++++
2 files changed, 120 insertions(+), 0 deletions(-)
diff --git a/src/trivial/Makefile.am b/src/trivial/Makefile.am
index bca6a7c..e5db0c6 100644
--- a/src/trivial/Makefile.am
+++ b/src/trivial/Makefile.am
@@ -128,6 +128,7 @@ bin_PROGRAMS = \
tri-cull \
tri-dlist \
tri-edgeflag \
+ tri-edgeflag-array \
trifan \
trifan-flat \
trifan-flat-clip \
diff --git a/src/trivial/tri-edgeflag-array.c b/src/trivial/tri-edgeflag-array.c
new file mode 100644
index 0000000..61fed02
--- /dev/null
+++ b/src/trivial/tri-edgeflag-array.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the name of
+ * Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Silicon Graphics.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF
+ * ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <GL/glut.h>
+
+static GLenum frontface = GL_CCW;
+
+
+static void
+Init(void)
+{
+ fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+ fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
+ fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
+ fflush(stderr);
+}
+
+
+static void
+Reshape(int width, int height)
+{
+ glViewport(0, 0, (GLint)width, (GLint)height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+static void
+Key(unsigned char key, int x, int y)
+{
+ switch (key) {
+ case 'f':
+ frontface = (frontface == GL_CCW) ? GL_CW : GL_CCW;
+ glFrontFace(frontface);
+ break;
+ case 27:
+ exit(1);
+ default:
+ return;
+ }
+ glutPostRedisplay();
+}
+
+
+static void
+Draw(void)
+{
+ static GLboolean flags[3] = { 1, 0, 1};
+ static GLfloat color[3][3] = {
+ { 0.3, 0.3, 0.9 },
+ { 0.8, 0.0, 0.0 },
+ { 0.0, 0.9, 0.0 }
+ };
+ static GLfloat vert[3][3] = {
+ { 0.9, -0.9, 0.0 },
+ { 0.9, 0.9, 0.0 },
+ { -0.9, 0.0, 0.0 }
+ };
+
+ glClear(GL_COLOR_BUFFER_BIT);
+ glPolygonMode(GL_FRONT, GL_LINE);
+ glPolygonMode(GL_BACK, GL_POINT);
+
+ glVertexPointer(3, GL_FLOAT, 0, vert);
+ glColorPointer(3, GL_FLOAT, 0, color);
+ glEdgeFlagPointer(0, flags);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_COLOR_ARRAY);
+ glEnableClientState(GL_EDGE_FLAG_ARRAY);
+
+ glDrawArrays(GL_TRIANGLES, 0, 3);
+
+ glutSwapBuffers();
+}
+
+
+int
+main(int argc, char **argv)
+{
+ glutInit(&argc, argv);
+
+ glutInitWindowPosition(0, 0);
+ glutInitWindowSize( 250, 250);
+ glutInitDisplayMode(GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE);
+ if (!glutCreateWindow(*argv)) {
+ exit(1);
+ }
+ glutReshapeFunc(Reshape);
+ glutKeyboardFunc(Key);
+ glutDisplayFunc(Draw);
+ Init();
+ glutMainLoop();
+ return 0;
+}
More information about the mesa-commit
mailing list