summaryrefslogtreecommitdiff
path: root/libre/mesa-demos-libre
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-02-27 00:03:49 -0800
committerroot <root@rshg054.dnsready.net>2013-02-27 00:03:49 -0800
commit23018fec360e50c7cb4de4b2411650ce79532e54 (patch)
tree766004a81e02dd8a2ea0d5092ce2d19aed799bf6 /libre/mesa-demos-libre
parent32e4cb82a73f6efc4254917e6324a2b61ecb5ddc (diff)
Wed Feb 27 00:03:48 PST 2013
Diffstat (limited to 'libre/mesa-demos-libre')
-rw-r--r--libre/mesa-demos-libre/PKGBUILD26
-rwxr-xr-xlibre/mesa-demos-libre/mesa-demos-libre.patch1198
2 files changed, 75 insertions, 1149 deletions
diff --git a/libre/mesa-demos-libre/PKGBUILD b/libre/mesa-demos-libre/PKGBUILD
index 31170b19f..46f2b42b4 100644
--- a/libre/mesa-demos-libre/PKGBUILD
+++ b/libre/mesa-demos-libre/PKGBUILD
@@ -1,29 +1,33 @@
-# $Id: PKGBUILD 151279 2012-02-25 12:34:03Z pierre $
+# $Id: PKGBUILD 178740 2013-02-26 16:15:13Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
-# Contributor (Parabola): <andre.paulista@adinet.com.uy>
+# Maintainer (Parabola): <emulatorman@lavabit.com>
pkgname='mesa-demos-libre'
-pkgver=8.0.1
-pkgrel=2
+pkgver=8.1.0
+pkgrel=1
arch=('i686' 'x86_64')
-pkgdesc="Mesa demos and tools, libre"
+pkgdesc="Mesa demos and tools, without nonfree demos"
url="http://mesa3d.sourceforge.net"
license=('custom')
-depends=('glew')
+depends=('libgl' 'glew')
provides=("mesa-demos=$pkgver")
replaces=('mesa-demos')
conflicts=('mesa-demos')
source=("ftp://ftp.freedesktop.org/pub/mesa/demos/${pkgver}/mesa-demos-${pkgver}.tar.bz2"
- mesa-demos-libre.patch
- LICENSE)
-md5sums=('320c2a4b6edc6faba35d9cb1e2a30bf4'
- '1858e95d40ac9e5e0b59753ce9e673e3'
- '5c65a0fe315dd347e09b1f2826a1df5a')
+ 'LICENSE'
+ 'mesa-demos-libre.patch')
+sha256sums=('9703fa0646b32a1e68d2abf5628f936f77bf97c69ffcaac90de380820a87a828'
+ '7fdc119cf53c8ca65396ea73f6d10af641ba41ea1dd2bd44a824726e01c8b3f2'
+ '476f58fc62e9074936643b0d61165c5160a6d5aed082e60c10b39d219f56913f')
build() {
cd "${srcdir}/mesa-demos-${pkgver}"
+
+ # Remove nonfree demos (pointblast and spriteblast)
+ rm -v src/demos/{pointblast,spriteblast}.c
patch -Np1 -i "${srcdir}/mesa-demos-libre.patch"
+
./configure --prefix=/usr
make
}
diff --git a/libre/mesa-demos-libre/mesa-demos-libre.patch b/libre/mesa-demos-libre/mesa-demos-libre.patch
index c5261f8e9..d630f373c 100755
--- a/libre/mesa-demos-libre/mesa-demos-libre.patch
+++ b/libre/mesa-demos-libre/mesa-demos-libre.patch
@@ -1,15 +1,15 @@
-diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.am mesa-demos-8.0.1//src/demos/Makefile.am
---- Desktop/mesa-demos-8.0.1//src/demos/Makefile.am 2010-07-13 14:46:40.000000000 -0400
-+++ mesa-demos-8.0.1/src/demos/Makefile.am 2011-06-04 15:34:18.000000000 -0400
-@@ -62,7 +62,6 @@ bin_PROGRAMS = \
- morph3d \
+diff -Nur mesa-demos-8.1.0.orig/src/demos/Makefile.am mesa-demos-8.1.0/src/demos/Makefile.am
+--- mesa-demos-8.1.0.orig/src/demos/Makefile.am 2012-12-15 05:17:06.000000000 -0200
++++ mesa-demos-8.1.0/src/demos/Makefile.am 2013-02-26 17:22:04.845832793 -0200
+@@ -65,7 +65,6 @@
multiarb \
paltex \
+ pixeltest \
- pointblast \
projtex \
ray \
readpix \
-@@ -71,7 +70,6 @@ bin_PROGRAMS = \
+@@ -74,7 +73,6 @@
shadowtex \
singlebuffer \
spectex \
@@ -17,36 +17,34 @@ diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.am mesa-demos-8.0.1//sr
stex3d \
teapot \
terrain \
-diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.in mesa-demos-8.0.1//src/demos/Makefile.in
---- Desktop/mesa-demos-8.0.1//src/demos/Makefile.in 2010-07-13 14:53:23.000000000 -0400
-+++ mesa-demos-8.0.1/src/demos/Makefile.in 2011-06-04 15:35:32.000000000 -0400
-@@ -73,11 +73,10 @@ host_triplet = @host@
+diff -Nur mesa-demos-8.1.0.orig/src/demos/Makefile.in mesa-demos-8.1.0/src/demos/Makefile.in
+--- mesa-demos-8.1.0.orig/src/demos/Makefile.in 2013-02-24 09:12:04.000000000 -0200
++++ mesa-demos-8.1.0/src/demos/Makefile.in 2013-02-26 17:48:36.711995049 -0200
+@@ -90,11 +90,11 @@
@HAVE_GLUT_TRUE@ ipers$(EXEEXT) isosurf$(EXEEXT) \
@HAVE_GLUT_TRUE@ lodbias$(EXEEXT) morph3d$(EXEEXT) \
@HAVE_GLUT_TRUE@ multiarb$(EXEEXT) paltex$(EXEEXT) \
--@HAVE_GLUT_TRUE@ pointblast$(EXEEXT) projtex$(EXEEXT) \
--@HAVE_GLUT_TRUE@ ray$(EXEEXT) readpix$(EXEEXT) reflect$(EXEEXT) \
--@HAVE_GLUT_TRUE@ renormal$(EXEEXT) shadowtex$(EXEEXT) \
--@HAVE_GLUT_TRUE@ singlebuffer$(EXEEXT) spectex$(EXEEXT) \
--@HAVE_GLUT_TRUE@ spriteblast$(EXEEXT) stex3d$(EXEEXT) \
-+@HAVE_GLUT_TRUE@ projtex$(EXEEXT) ray$(EXEEXT) readpix$(EXEEXT) \
-+@HAVE_GLUT_TRUE@ reflect$(EXEEXT) renormal$(EXEEXT) \
-+@HAVE_GLUT_TRUE@ shadowtex$(EXEEXT) singlebuffer$(EXEEXT) \
-+@HAVE_GLUT_TRUE@ spectex$(EXEEXT) stex3d$(EXEEXT) \
- @HAVE_GLUT_TRUE@ teapot$(EXEEXT) terrain$(EXEEXT) \
- @HAVE_GLUT_TRUE@ tessdemo$(EXEEXT) texcyl$(EXEEXT) \
- @HAVE_GLUT_TRUE@ texenv$(EXEEXT) textures$(EXEEXT) \
-@@ -188,9 +187,6 @@ multiarb_DEPENDENCIES = ../util/libutil.
- paltex_SOURCES = paltex.c
- paltex_OBJECTS = paltex.$(OBJEXT)
- paltex_LDADD = $(LDADD)
+-@HAVE_GLUT_TRUE@ pixeltest$(EXEEXT) pointblast$(EXEEXT) \
++@HAVE_GLUT_TRUE@ pixeltest$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ projtex$(EXEEXT) ray$(EXEEXT) readpix$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ reflect$(EXEEXT) renormal$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ shadowtex$(EXEEXT) singlebuffer$(EXEEXT) \
+-@HAVE_GLUT_TRUE@ spectex$(EXEEXT) spriteblast$(EXEEXT) \
++@HAVE_GLUT_TRUE@ spectex$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ stex3d$(EXEEXT) teapot$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ terrain$(EXEEXT) tessdemo$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ texcyl$(EXEEXT) texenv$(EXEEXT) \
+@@ -219,9 +219,6 @@
+ pixeltest_SOURCES = pixeltest.c
+ pixeltest_OBJECTS = pixeltest.$(OBJEXT)
+ pixeltest_LDADD = $(LDADD)
-pointblast_SOURCES = pointblast.c
-pointblast_OBJECTS = pointblast.$(OBJEXT)
-pointblast_LDADD = $(LDADD)
projtex_SOURCES = projtex.c
projtex_OBJECTS = projtex.$(OBJEXT)
projtex_DEPENDENCIES = ../util/libutil.la
-@@ -215,9 +211,6 @@ singlebuffer_LDADD = $(LDADD)
+@@ -246,9 +243,6 @@
spectex_SOURCES = spectex.c
spectex_OBJECTS = spectex.$(OBJEXT)
spectex_LDADD = $(LDADD)
@@ -56,66 +54,57 @@ diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.in mesa-demos-8.0.1//sr
stex3d_SOURCES = stex3d.c
stex3d_OBJECTS = stex3d.$(OBJEXT)
stex3d_LDADD = $(LDADD)
-@@ -285,21 +278,20 @@ SOURCES = arbfplight.c arbfslight.c arbo
- fbo_firecube.c fbotexture.c fire.c fogcoord.c fplight.c \
- fslight.c gamma.c gearbox.c gears.c geartrain.c glinfo.c \
- gloss.c gltestperf.c ipers.c isosurf.c lodbias.c morph3d.c \
-- multiarb.c paltex.c pointblast.c projtex.c ray.c readpix.c \
-- reflect.c renormal.c shadowtex.c singlebuffer.c spectex.c \
-- spriteblast.c stex3d.c teapot.c terrain.c tessdemo.c texcyl.c \
-- texenv.c textures.c trispd.c $(tunnel_SOURCES) tunnel2.c \
-- vao_demo.c winpos.c
-+ multiarb.c paltex.c projtex.c ray.c readpix.c reflect.c \
-+ renormal.c shadowtex.c singlebuffer.c spectex.c stex3d.c \
-+ teapot.c terrain.c tessdemo.c texcyl.c texenv.c textures.c \
-+ trispd.c $(tunnel_SOURCES) tunnel2.c vao_demo.c winpos.c
- DIST_SOURCES = arbfplight.c arbfslight.c arbocclude.c bounce.c \
- clearspd.c copypix.c cubemap.c dinoshade.c dissolve.c \
- drawpix.c engine.c fbo_firecube.c fbotexture.c fire.c \
- fogcoord.c fplight.c fslight.c gamma.c gearbox.c gears.c \
- geartrain.c glinfo.c gloss.c gltestperf.c ipers.c isosurf.c \
-- lodbias.c morph3d.c multiarb.c paltex.c pointblast.c projtex.c \
-- ray.c readpix.c reflect.c renormal.c shadowtex.c \
-- singlebuffer.c spectex.c spriteblast.c stex3d.c teapot.c \
-- terrain.c tessdemo.c texcyl.c texenv.c textures.c trispd.c \
-- $(tunnel_SOURCES) tunnel2.c vao_demo.c winpos.c
-+ lodbias.c morph3d.c multiarb.c paltex.c projtex.c ray.c \
-+ readpix.c reflect.c renormal.c shadowtex.c singlebuffer.c \
-+ spectex.c stex3d.c teapot.c terrain.c tessdemo.c texcyl.c \
-+ texenv.c textures.c trispd.c $(tunnel_SOURCES) tunnel2.c \
-+ vao_demo.c winpos.c
- ETAGS = etags
- CTAGS = ctags
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-@@ -653,9 +645,6 @@ multiarb$(EXEEXT): $(multiarb_OBJECTS) $
- paltex$(EXEEXT): $(paltex_OBJECTS) $(paltex_DEPENDENCIES)
- @rm -f paltex$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(paltex_OBJECTS) $(paltex_LDADD) $(LIBS)
--pointblast$(EXEEXT): $(pointblast_OBJECTS) $(pointblast_DEPENDENCIES)
+@@ -325,8 +319,8 @@
+ fbotexture.c fire.c fogcoord.c fplight.c fslight.c gamma.c \
+ gearbox.c gears.c geartrain.c glinfo.c gloss.c gltestperf.c \
+ ipers.c isosurf.c lodbias.c morph3d.c multiarb.c paltex.c \
+- pixeltest.c pointblast.c projtex.c ray.c readpix.c reflect.c \
+- renormal.c shadowtex.c singlebuffer.c spectex.c spriteblast.c \
++ pixeltest.c projtex.c ray.c readpix.c reflect.c \
++ renormal.c shadowtex.c singlebuffer.c spectex.c \
+ stex3d.c teapot.c terrain.c tessdemo.c texcyl.c texenv.c \
+ textures.c trispd.c $(tunnel_SOURCES) tunnel2.c vao_demo.c \
+ winpos.c
+@@ -336,8 +330,8 @@
+ fbotexture.c fire.c fogcoord.c fplight.c fslight.c gamma.c \
+ gearbox.c gears.c geartrain.c glinfo.c gloss.c gltestperf.c \
+ ipers.c isosurf.c lodbias.c morph3d.c multiarb.c paltex.c \
+- pixeltest.c pointblast.c projtex.c ray.c readpix.c reflect.c \
+- renormal.c shadowtex.c singlebuffer.c spectex.c spriteblast.c \
++ pixeltest.c projtex.c ray.c readpix.c reflect.c \
++ renormal.c shadowtex.c singlebuffer.c spectex.c \
+ stex3d.c teapot.c terrain.c tessdemo.c texcyl.c texenv.c \
+ textures.c trispd.c $(tunnel_SOURCES) tunnel2.c vao_demo.c \
+ winpos.c
+@@ -722,9 +716,6 @@
+ pixeltest$(EXEEXT): $(pixeltest_OBJECTS) $(pixeltest_DEPENDENCIES) $(EXTRA_pixeltest_DEPENDENCIES)
+ @rm -f pixeltest$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pixeltest_OBJECTS) $(pixeltest_LDADD) $(LIBS)
+-pointblast$(EXEEXT): $(pointblast_OBJECTS) $(pointblast_DEPENDENCIES) $(EXTRA_pointblast_DEPENDENCIES)
- @rm -f pointblast$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(pointblast_OBJECTS) $(pointblast_LDADD) $(LIBS)
- projtex$(EXEEXT): $(projtex_OBJECTS) $(projtex_DEPENDENCIES)
+ projtex$(EXEEXT): $(projtex_OBJECTS) $(projtex_DEPENDENCIES) $(EXTRA_projtex_DEPENDENCIES)
@rm -f projtex$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(projtex_OBJECTS) $(projtex_LDADD) $(LIBS)
-@@ -680,9 +669,6 @@ singlebuffer$(EXEEXT): $(singlebuffer_OB
- spectex$(EXEEXT): $(spectex_OBJECTS) $(spectex_DEPENDENCIES)
+@@ -749,9 +740,6 @@
+ spectex$(EXEEXT): $(spectex_OBJECTS) $(spectex_DEPENDENCIES) $(EXTRA_spectex_DEPENDENCIES)
@rm -f spectex$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(spectex_OBJECTS) $(spectex_LDADD) $(LIBS)
--spriteblast$(EXEEXT): $(spriteblast_OBJECTS) $(spriteblast_DEPENDENCIES)
+-spriteblast$(EXEEXT): $(spriteblast_OBJECTS) $(spriteblast_DEPENDENCIES) $(EXTRA_spriteblast_DEPENDENCIES)
- @rm -f spriteblast$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(spriteblast_OBJECTS) $(spriteblast_LDADD) $(LIBS)
- stex3d$(EXEEXT): $(stex3d_OBJECTS) $(stex3d_DEPENDENCIES)
+ stex3d$(EXEEXT): $(stex3d_OBJECTS) $(stex3d_DEPENDENCIES) $(EXTRA_stex3d_DEPENDENCIES)
@rm -f stex3d$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(stex3d_OBJECTS) $(stex3d_LDADD) $(LIBS)
-@@ -756,7 +742,6 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph3d.Po@am__quote@
+@@ -828,7 +816,6 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiarb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paltex.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixeltest.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pointblast.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projtex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ray.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readpix.Po@am__quote@
-@@ -765,7 +750,6 @@ distclean-compile:
+@@ -837,7 +824,6 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shadowtex.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/singlebuffer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spectex.Po@am__quote@
@@ -123,1070 +112,3 @@ diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.in mesa-demos-8.0.1//sr
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stex3d.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/teapot.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/terrain.Po@am__quote@
-diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/pointblast.c mesa-demos-8.0.1//src/demos/pointblast.c
---- Desktop/mesa-demos-8.0.1//src/demos/pointblast.c 2010-07-07 13:57:15.000000000 -0400
-+++ mesa-demos-8.0.1/src/demos/pointblast.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,504 +0,0 @@
--
--/* Copyright (c) Mark J. Kilgard, 1997. */
--
--/* This program is freely distributable without licensing fees
-- and is provided without guarantee or warrantee expressed or
-- implied. This program is -not- in the public domain. */
--
--/* This example demonstrates how to render particle effects
-- with OpenGL. A cloud of pinkish/orange particles explodes with the
-- particles bouncing off the ground. When the EXT_point_parameters
-- is present , the particle size is attenuated based on eye distance. */
--
--
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--#include <math.h> /* for cos(), sin(), and sqrt() */
--#ifdef _WIN32
--#include <windows.h>
--#endif
--#include <GL/glew.h>
--#include <GL/glut.h>
--
--/* Some <math.h> files do not define M_PI... */
--#ifndef M_PI
--#define M_PI 3.14159265
--#endif
--
--#if 0 /* For debugging. */
--#undef GL_EXT_point_parameters
--#endif
--
--static GLfloat angle = -150; /* in degrees */
--static int spin = 0;
--static int moving, begin;
--static int newModel = 1;
--static float theTime;
--static int repeat = 1;
--static int blend = 1;
--int useMipmaps = 1;
--int linearFiltering = 1;
--
--static GLfloat constant[3] = { 1/5.0, 0.0, 0.0 };
--static GLfloat linear[3] = { 0.0, 1/5.0, 0.0 };
--static GLfloat theQuad[3] = { 0.25, 0.0, 1/60.0 };
--
--#define MAX_POINTS 2000
--
--static int numPoints = 200;
--
--static GLfloat pointList[MAX_POINTS][3];
--static GLfloat pointTime[MAX_POINTS];
--static GLfloat pointVelocity[MAX_POINTS][2];
--static GLfloat pointDirection[MAX_POINTS][2];
--static int colorList[MAX_POINTS];
--static int animate = 1, motion = 0;
--
--static GLfloat colorSet[][4] = {
-- /* Shades of red. */
-- { 0.7, 0.2, 0.4, 0.5 },
-- { 0.8, 0.0, 0.7, 0.5 },
-- { 1.0, 0.0, 0.0, 0.5 },
-- { 0.9, 0.3, 0.6, 0.5 },
-- { 1.0, 0.4, 0.0, 0.5 },
-- { 1.0, 0.0, 0.5, 0.5 },
--};
--
--#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
--
--#define DEAD (NUM_COLORS+1)
--
--
--#if 0 /* drand48 might be better on Unix machines */
--#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
--#else
--static float float_rand(void) { return rand() / (float) RAND_MAX; }
--#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
--#endif
--
--#define MEAN_VELOCITY 3.0
--#define GRAVITY 2.0
--
--/* Modeling units of ground extent in each X and Z direction. */
--#define EDGE 12
--
--static void
--makePointList(void)
--{
-- float angle, velocity, direction;
-- int i;
--
-- motion = 1;
-- for (i=0; i<numPoints; i++) {
-- pointList[i][0] = 0.0;
-- pointList[i][1] = 0.0;
-- pointList[i][2] = 0.0;
-- pointTime[i] = 0.0;
-- angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
-- direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
-- pointDirection[i][0] = cos(direction);
-- pointDirection[i][1] = sin(direction);
-- velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
-- pointVelocity[i][0] = velocity * cos(angle);
-- pointVelocity[i][1] = velocity * sin(angle);
-- colorList[i] = rand() % NUM_COLORS;
-- }
-- theTime = 0.0;
--}
--
--static void
--updatePointList(void)
--{
-- float distance;
-- int i;
--
-- static double t0 = -1.;
-- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
-- if (t0 < 0.0)
-- t0 = t;
-- dt = t - t0;
-- t0 = t;
--
-- motion = 0;
-- for (i=0; i<numPoints; i++) {
-- distance = pointVelocity[i][0] * theTime;
--
-- /* X and Z */
-- pointList[i][0] = pointDirection[i][0] * distance;
-- pointList[i][2] = pointDirection[i][1] * distance;
--
-- /* Z */
-- pointList[i][1] =
-- (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
--
-- /* If we hit the ground, bounce the point upward again. */
-- if (pointList[i][1] <= 0.0) {
-- if (distance > EDGE) {
-- /* Particle has hit ground past the distance duration of
-- the particles. Mark particle as dead. */
-- colorList[i] = NUM_COLORS; /* Not moving. */
-- continue;
-- }
--
-- pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */
-- pointTime[i] = 0.0; /* Reset the particles sense of up time. */
-- }
-- motion = 1;
-- pointTime[i] += dt;
-- }
-- theTime += dt;
-- if (!motion && !spin) {
-- if (repeat) {
-- makePointList();
-- } else {
-- glutIdleFunc(NULL);
-- }
-- }
--}
--
--static void
--idle(void)
--{
-- updatePointList();
-- if (spin) {
-- angle += 0.3;
-- newModel = 1;
-- }
-- glutPostRedisplay();
--}
--
--static void
--visible(int vis)
--{
-- if (vis == GLUT_VISIBLE) {
-- if (animate && (motion || spin)) {
-- glutIdleFunc(idle);
-- }
-- } else {
-- glutIdleFunc(NULL);
-- }
--}
--
--static void
--recalcModelView(void)
--{
-- glPopMatrix();
-- glPushMatrix();
-- glRotatef(angle, 0.0, 1.0, 0.0);
-- newModel = 0;
--}
--
--static void
--redraw(void)
--{
-- int i;
--
-- glDepthMask(GL_TRUE);
-- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-- if (newModel)
-- recalcModelView();
--
--
-- /* Draw the floor. */
--/* glEnable(GL_TEXTURE_2D);*/
-- glColor3f(0.5, 1.0, 0.5);
-- glBegin(GL_QUADS);
-- glTexCoord2f(0.0, 0.0);
-- glVertex3f(-EDGE, -0.05, -EDGE);
-- glTexCoord2f(20.0, 0.0);
-- glVertex3f(EDGE, -0.05, -EDGE);
-- glTexCoord2f(20.0, 20.0);
-- glVertex3f(EDGE, -0.05, EDGE);
-- glTexCoord2f(0.0, 20.0);
-- glVertex3f(-EDGE, -0.05, EDGE);
-- glEnd();
--
-- /* Allow particles to blend with each other. */
-- glDepthMask(GL_FALSE);
--
-- if (blend)
-- glEnable(GL_BLEND);
--
-- glDisable(GL_TEXTURE_2D);
-- glBegin(GL_POINTS);
-- for (i=0; i<numPoints; i++) {
-- /* Draw alive particles. */
-- if (colorList[i] != DEAD) {
-- glColor4fv(colorSet[colorList[i]]);
-- glVertex3fv(pointList[i]);
-- }
-- }
-- glEnd();
--
-- glDisable(GL_BLEND);
--
-- glutSwapBuffers();
--}
--
--/* ARGSUSED2 */
--static void
--mouse(int button, int state, int x, int y)
--{
-- /* Scene can be spun around Y axis using left
-- mouse button movement. */
-- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
-- moving = 1;
-- begin = x;
-- }
-- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
-- moving = 0;
-- }
--}
--
--/* ARGSUSED1 */
--static void
--mouseMotion(int x, int y)
--{
-- if (moving) {
-- angle = angle + (x - begin);
-- begin = x;
-- newModel = 1;
-- glutPostRedisplay();
-- }
--}
--
--static void
--menu(int option)
--{
-- switch (option) {
-- case 0:
-- makePointList();
-- break;
--#ifdef GL_ARB_point_parameters
-- case 1:
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
-- break;
-- case 2:
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
-- break;
-- case 3:
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-- break;
--#endif
-- case 4:
-- blend = 1;
-- break;
-- case 5:
-- blend = 0;
-- break;
--#ifdef GL_ARB_point_parameters
-- case 6:
-- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
-- break;
-- case 7:
-- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
-- break;
--#endif
-- case 8:
-- glEnable(GL_POINT_SMOOTH);
-- break;
-- case 9:
-- glDisable(GL_POINT_SMOOTH);
-- break;
-- case 10:
-- glPointSize(2.0);
-- break;
-- case 11:
-- glPointSize(4.0);
-- break;
-- case 12:
-- glPointSize(8.0);
-- break;
-- case 13:
-- spin = 1 - spin;
-- if (animate && (spin || motion)) {
-- glutIdleFunc(idle);
-- } else {
-- glutIdleFunc(NULL);
-- }
-- break;
-- case 14:
-- numPoints = 200;
-- break;
-- case 15:
-- numPoints = 500;
-- break;
-- case 16:
-- numPoints = 1000;
-- break;
-- case 17:
-- numPoints = 2000;
-- break;
-- case 666:
-- exit(0);
-- }
-- glutPostRedisplay();
--}
--
--/* ARGSUSED1 */
--static void
--key(unsigned char c, int x, int y)
--{
-- switch (c) {
-- case 13:
-- animate = 1 - animate; /* toggle. */
-- if (animate && (motion || spin)) {
-- glutIdleFunc(idle);
-- } else {
-- glutIdleFunc(NULL);
-- }
-- break;
-- case ' ':
-- animate = 1;
-- makePointList();
-- glutIdleFunc(idle);
-- break;
-- case 27:
-- exit(0);
-- }
--}
--
--/* Nice floor texture tiling pattern. */
--static char *circles[] = {
-- "....xxxx........",
-- "..xxxxxxxx......",
-- ".xxxxxxxxxx.....",
-- ".xxx....xxx.....",
-- "xxx......xxx....",
-- "xxx......xxx....",
-- "xxx......xxx....",
-- "xxx......xxx....",
-- ".xxx....xxx.....",
-- ".xxxxxxxxxx.....",
-- "..xxxxxxxx......",
-- "....xxxx........",
-- "................",
-- "................",
-- "................",
-- "................",
--};
--
--static void
--makeFloorTexture(void)
--{
-- GLubyte floorTexture[16][16][3];
-- GLubyte *loc;
-- int s, t;
--
-- /* Setup RGB image for the texture. */
-- loc = (GLubyte*) floorTexture;
-- for (t = 0; t < 16; t++) {
-- for (s = 0; s < 16; s++) {
-- if (circles[t][s] == 'x') {
-- /* Nice blue. */
-- loc[0] = 0x1f;
-- loc[1] = 0x1f;
-- loc[2] = 0x8f;
-- } else {
-- /* Light gray. */
-- loc[0] = 0xca;
-- loc[1] = 0xca;
-- loc[2] = 0xca;
-- }
-- loc += 3;
-- }
-- }
--
-- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
--
-- if (useMipmaps) {
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
-- GL_LINEAR_MIPMAP_LINEAR);
-- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16,
-- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
-- } else {
-- if (linearFiltering) {
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-- } else {
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-- }
-- glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
-- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
-- }
--}
--
--int
--main(int argc, char **argv)
--{
-- int i;
--
-- glutInitWindowSize(300, 300);
-- glutInit(&argc, argv);
-- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
--
-- for (i=1; i<argc; i++) {
-- if(!strcmp("-noms", argv[i])) {
-- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
-- printf("forcing no multisampling\n");
-- } else if(!strcmp("-nomipmaps", argv[i])) {
-- useMipmaps = 0;
-- } else if(!strcmp("-nearest", argv[i])) {
-- linearFiltering = 0;
-- }
-- }
--
-- glutCreateWindow("point burst");
-- glewInit();
-- glutDisplayFunc(redraw);
-- glutMouseFunc(mouse);
-- glutMotionFunc(mouseMotion);
-- glutVisibilityFunc(visible);
-- glutKeyboardFunc(key);
-- glutCreateMenu(menu);
-- glutAddMenuEntry("Reset time", 0);
-- glutAddMenuEntry("Constant", 1);
-- glutAddMenuEntry("Linear", 2);
-- glutAddMenuEntry("Quadratic", 3);
-- glutAddMenuEntry("Blend on", 4);
-- glutAddMenuEntry("Blend off", 5);
-- glutAddMenuEntry("Threshold 1", 6);
-- glutAddMenuEntry("Threshold 10", 7);
-- glutAddMenuEntry("Point smooth on", 8);
-- glutAddMenuEntry("Point smooth off", 9);
-- glutAddMenuEntry("Point size 2", 10);
-- glutAddMenuEntry("Point size 4", 11);
-- glutAddMenuEntry("Point size 8", 12);
-- glutAddMenuEntry("Toggle spin", 13);
-- glutAddMenuEntry("200 points ", 14);
-- glutAddMenuEntry("500 points ", 15);
-- glutAddMenuEntry("1000 points ", 16);
-- glutAddMenuEntry("2000 points ", 17);
-- glutAddMenuEntry("Quit", 666);
-- glutAttachMenu(GLUT_RIGHT_BUTTON);
--
-- if (!glutExtensionSupported("GL_ARB_point_parameters")) {
-- fprintf(stderr, "Sorry, GL_ARB_point_parameters is not supported.\n");
-- return -1;
-- }
--
-- glShadeModel(GL_FLAT);
-- glEnable(GL_DEPTH_TEST);
-- glEnable(GL_POINT_SMOOTH);
-- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-- glPointSize(8.0);
--#if GL_ARB_point_parameters
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
--#endif
-- glMatrixMode(GL_PROJECTION);
-- gluPerspective( /* field of view in degree */ 40.0,
-- /* aspect ratio */ 1.0,
-- /* Z near */ 0.5, /* Z far */ 40.0);
-- glMatrixMode(GL_MODELVIEW);
-- gluLookAt(0.0, 1.0, 8.0, /* eye location */
-- 0.0, 1.0, 0.0, /* center is at (0,0,0) */
-- 0.0, 1.0, 0.); /* up is in postivie Y direction */
-- glPushMatrix(); /* dummy push so we can pop on model
-- recalc */
--
-- makePointList();
-- makeFloorTexture();
--
-- glutMainLoop();
-- return 0; /* ANSI C requires main to return int. */
--}
-diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/spriteblast.c mesa-demos-8.0.1//src/demos/spriteblast.c
---- Desktop/mesa-demos-8.0.1//src/demos/spriteblast.c 2010-07-07 13:57:15.000000000 -0400
-+++ mesa-demos-8.0.1/src/demos/spriteblast.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,555 +0,0 @@
--
--/* Copyright (c) Mark J. Kilgard, 1997. */
--
--/* This program is freely distributable without licensing fees
-- and is provided without guarantee or warrantee expressed or
-- implied. This program is -not- in the public domain. */
--
--/* This example demonstrates how to render particle effects
-- with OpenGL. A cloud of pinkish/orange particles explodes with the
-- particles bouncing off the ground. When the EXT_point_parameters
-- is present , the particle size is attenuated based on eye distance. */
--
--
--/* Modified by Brian Paul to test GL_ARB_point_sprite */
--
--
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--#include <math.h> /* for cos(), sin(), and sqrt() */
--#ifdef _WIN32
--#include <windows.h>
--#endif
--#include <GL/glew.h>
--#include <GL/glut.h>
--
--/* Some <math.h> files do not define M_PI... */
--#ifndef M_PI
--#define M_PI 3.14159265
--#endif
--
--#if 0 /* For debugging. */
--#undef GL_EXT_point_parameters
--#endif
--
--static GLfloat angle = -150; /* in degrees */
--static int spin = 0;
--static int moving, begin;
--static float theTime;
--static int repeat = 1;
--static int blend = 1;
--int useMipmaps = 1;
--int linearFiltering = 1;
--
--static GLfloat constant[3] = { .2, 0.0, 0.0 };
--static GLfloat linear[3] = { .0, .1, 0.0 };
--static GLfloat theQuad[3] = { .005, 0.1, 1/600.0 };
--
--#define MAX_POINTS 2000
--
--static int numPoints = 200;
--
--static GLfloat pointList[MAX_POINTS][3];
--static GLfloat pointTime[MAX_POINTS];
--static GLfloat pointVelocity[MAX_POINTS][2];
--static GLfloat pointDirection[MAX_POINTS][2];
--static int colorList[MAX_POINTS];
--static int animate = 1, motion = 0, org = 0, sprite = 1, smooth = 1;
--
--static GLfloat colorSet[][4] = {
-- /* Shades of red. */
-- { 0.7, 0.2, 0.4, 0.5 },
-- { 0.8, 0.0, 0.7, 0.5 },
-- { 1.0, 0.0, 0.0, 0.5 },
-- { 0.9, 0.3, 0.6, 0.5 },
-- { 1.0, 0.4, 0.0, 0.5 },
-- { 1.0, 0.0, 0.5, 0.5 },
--};
--
--#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
--
--#define DEAD (NUM_COLORS+1)
--
--
--/* GL */
--static GLint spritePattern[16][16] = {
-- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-- { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
-- { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
-- { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
-- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
--};
--
--
--
--
--#if 0 /* drand48 might be better on Unix machines */
--#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
--#else
--static float float_rand(void) { return rand() / (float) RAND_MAX; }
--#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
--#endif
--
--#define MEAN_VELOCITY 3.0
--#define GRAVITY 2.0
--
--/* Modeling units of ground extent in each X and Z direction. */
--#define EDGE 12
--
--static void
--makePointList(void)
--{
-- float angle, velocity, direction;
-- int i;
--
-- motion = 1;
-- for (i=0; i<numPoints; i++) {
-- pointList[i][0] = 0.0;
-- pointList[i][1] = 0.0;
-- pointList[i][2] = 0.0;
-- pointTime[i] = 0.0;
-- angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
-- direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
-- pointDirection[i][0] = cos(direction);
-- pointDirection[i][1] = sin(direction);
-- velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
-- pointVelocity[i][0] = velocity * cos(angle);
-- pointVelocity[i][1] = velocity * sin(angle);
-- colorList[i] = rand() % NUM_COLORS;
-- }
-- theTime = 0.0;
--}
--
--static void
--updatePointList(void)
--{
-- float distance;
-- int i;
--
-- static double t0 = -1.;
-- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
-- if (t0 < 0.0)
-- t0 = t;
-- dt = t - t0;
-- t0 = t;
--
-- motion = 0;
-- for (i=0; i<numPoints; i++) {
-- distance = pointVelocity[i][0] * theTime;
--
-- /* X and Z */
-- pointList[i][0] = pointDirection[i][0] * distance;
-- pointList[i][2] = pointDirection[i][1] * distance;
--
-- /* Z */
-- pointList[i][1] =
-- (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
--
-- /* If we hit the ground, bounce the point upward again. */
-- if (pointList[i][1] <= 0.0) {
-- if (distance > EDGE) {
-- /* Particle has hit ground past the distance duration of
-- the particles. Mark particle as dead. */
-- colorList[i] = NUM_COLORS; /* Not moving. */
-- continue;
-- }
--
-- pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */
-- pointTime[i] = 0.0; /* Reset the particles sense of up time. */
-- }
-- motion = 1;
-- pointTime[i] += dt;
-- }
-- theTime += dt;
-- if (!motion && !spin) {
-- if (repeat) {
-- makePointList();
-- } else {
-- glutIdleFunc(NULL);
-- }
-- }
--}
--
--static void
--idle(void)
--{
-- updatePointList();
-- if (spin) {
-- angle += 0.3;
-- }
-- glutPostRedisplay();
--}
--
--static void
--visible(int vis)
--{
-- if (vis == GLUT_VISIBLE) {
-- if (animate && (motion || spin)) {
-- glutIdleFunc(idle);
-- }
-- } else {
-- glutIdleFunc(NULL);
-- }
--}
--
--static void
--redraw(void)
--{
-- int i;
--
-- glDepthMask(GL_TRUE);
-- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
--
-- glPushMatrix();
-- glRotatef(15.0, 1.0, 0.0, 0.0);
-- glRotatef(angle, 0.0, 1.0, 0.0);
--
--
-- /* Draw the floor. */
--/* glEnable(GL_TEXTURE_2D);*/
-- glColor3f(0.1, 0.5, 1.0);
-- glBegin(GL_QUADS);
-- glTexCoord2f(0.0, 0.0);
-- glVertex3f(-EDGE, -0.05, -EDGE);
-- glTexCoord2f(20.0, 0.0);
-- glVertex3f(EDGE, -0.05, -EDGE);
-- glTexCoord2f(20.0, 20.0);
-- glVertex3f(EDGE, -0.05, EDGE);
-- glTexCoord2f(0.0, 20.0);
-- glVertex3f(-EDGE, -0.05, EDGE);
-- glEnd();
--
-- /* Allow particles to blend with each other. */
-- glDepthMask(GL_FALSE);
--
-- if (blend)
-- glEnable(GL_BLEND);
--
-- if (sprite) {
-- glEnable(GL_TEXTURE_2D);
--#ifdef GL_ARB_point_sprite
-- glEnable(GL_POINT_SPRITE_ARB);
--#endif
-- }
--
-- glColor3f(1,1,1);
-- glBegin(GL_POINTS);
-- for (i=0; i<numPoints; i++) {
-- /* Draw alive particles. */
-- if (colorList[i] != DEAD) {
-- if (!sprite) glColor4fv(colorSet[colorList[i]]);
-- glVertex3fv(pointList[i]);
-- }
-- }
-- glEnd();
--
-- glDisable(GL_TEXTURE_2D);
--#ifdef GL_ARB_point_sprite
-- glDisable(GL_POINT_SPRITE_ARB);
--#endif
-- glDisable(GL_BLEND);
--
-- glPopMatrix();
--
-- glutSwapBuffers();
--}
--
--/* ARGSUSED2 */
--static void
--mouse(int button, int state, int x, int y)
--{
-- /* Scene can be spun around Y axis using left
-- mouse button movement. */
-- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
-- moving = 1;
-- begin = x;
-- }
-- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
-- moving = 0;
-- }
--}
--
--/* ARGSUSED1 */
--static void
--mouseMotion(int x, int y)
--{
-- if (moving) {
-- angle = angle + (x - begin);
-- begin = x;
-- glutPostRedisplay();
-- }
--}
--
--static void
--menu(int option)
--{
-- switch (option) {
-- case 0:
-- makePointList();
-- break;
--#ifdef GL_ARB_point_parameters
-- case 1:
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
-- break;
-- case 2:
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
-- break;
-- case 3:
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-- break;
--#endif
-- case 4:
-- blend = 1;
-- break;
-- case 5:
-- blend = 0;
-- break;
--#ifdef GL_ARB_point_parameters
-- case 6:
-- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
-- break;
-- case 7:
-- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
-- break;
--#endif
-- case 8:
-- glEnable(GL_POINT_SMOOTH);
-- smooth = 1;
-- break;
-- case 9:
-- glDisable(GL_POINT_SMOOTH);
-- smooth = 0;
-- break;
-- case 10:
-- glPointSize(16.0);
-- break;
-- case 11:
-- glPointSize(32.0);
-- break;
-- case 12:
-- glPointSize(64.0);
-- break;
-- case 13:
-- spin = 1 - spin;
-- if (animate && (spin || motion)) {
-- glutIdleFunc(idle);
-- } else {
-- glutIdleFunc(NULL);
-- }
-- break;
-- case 14:
-- numPoints = 200;
-- break;
-- case 15:
-- numPoints = 500;
-- break;
-- case 16:
-- numPoints = 1000;
-- break;
-- case 17:
-- numPoints = 2000;
-- break;
-- case 666:
-- exit(0);
-- }
-- glutPostRedisplay();
--}
--
--/* ARGSUSED1 */
--static void
--key(unsigned char c, int x, int y)
--{
-- switch (c) {
-- case 13:
-- animate = 1 - animate; /* toggle. */
-- if (animate && (motion || spin)) {
-- glutIdleFunc(idle);
-- } else {
-- glutIdleFunc(NULL);
-- }
-- break;
-- case ' ':
-- animate = 1;
-- makePointList();
-- glutIdleFunc(idle);
-- break;
-- case 'o':
-- case 'O':
-- org ^= 1;
--#ifdef GL_VERSION_2_0
--#ifdef GL_ARB_point_parameters
-- glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN,
-- org ? GL_LOWER_LEFT : GL_UPPER_LEFT);
--#endif
--#endif
-- glutPostRedisplay();
-- break;
-- case 't':
-- case 'T':
-- sprite ^= 1;
-- glutPostRedisplay();
-- break;
-- case 's':
-- case 'S':
-- (smooth ^= 1) ? glEnable(GL_POINT_SMOOTH) : glDisable(GL_POINT_SMOOTH);
-- glutPostRedisplay();
-- break;
-- case '0':
-- glPointSize(1.0);
-- glutPostRedisplay();
-- break;
-- case '1':
-- glPointSize(16.0);
-- glutPostRedisplay();
-- break;
-- case '2':
-- glPointSize(32.0);
-- glutPostRedisplay();
-- break;
-- case '3':
-- glPointSize(64.0);
-- glutPostRedisplay();
-- break;
-- case '4':
-- glPointSize(128.0);
-- glutPostRedisplay();
-- break;
-- case 27:
-- exit(0);
-- }
--}
--
--
--
--static void
--makeSprite(void)
--{
-- GLubyte texture[16][16][4];
-- int i, j;
--
-- if (!glutExtensionSupported("GL_ARB_point_sprite")) {
-- printf("Sorry, this demo requires GL_ARB_point_sprite.\n");
-- exit(0);
-- }
-- if (!glutExtensionSupported("GL_ARB_point_parameters")) {
-- printf("Sorry, this demo requires GL_ARB_point_parameters.\n");
-- exit(0);
-- }
--
-- for (i = 0; i < 16; i++) {
-- for (j = 0; j < 16; j++) {
-- if (spritePattern[i][j]) {
-- texture[i][j][0] = 255;
-- texture[i][j][1] = 255;
-- texture[i][j][2] = 255;
-- texture[i][j][3] = 255;
-- }
-- else {
-- texture[i][j][0] = 255;
-- texture[i][j][1] = 0;
-- texture[i][j][2] = 0;
-- texture[i][j][3] = 0;
-- }
-- }
-- }
--
-- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE,
-- texture);
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
--#ifdef GL_ARB_point_sprite
-- glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
--#endif
--}
--
--
--static void
--reshape(int width, int height)
--{
-- GLfloat h = (GLfloat) height / (GLfloat) width;
--
-- glViewport(0, 0, (GLint) width, (GLint) height);
-- glMatrixMode(GL_PROJECTION);
-- glLoadIdentity();
-- glFrustum(-1.0, 1.0, -h, h, 2.0, 30.0);
-- glMatrixMode(GL_MODELVIEW);
-- glLoadIdentity();
-- glTranslatef(0.0, 0.0, -10.0);
--}
--
--int
--main(int argc, char **argv)
--{
-- int i;
--
-- glutInitWindowSize(600,300);
-- glutInit(&argc, argv);
-- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
--
-- for (i=1; i<argc; i++) {
-- if(!strcmp("-noms", argv[i])) {
-- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
-- printf("forcing no multisampling\n");
-- } else if(!strcmp("-nomipmaps", argv[i])) {
-- useMipmaps = 0;
-- } else if(!strcmp("-nearest", argv[i])) {
-- linearFiltering = 0;
-- }
-- }
-- glutCreateWindow("sprite blast");
-- glewInit();
-- glutReshapeFunc(reshape);
-- glutDisplayFunc(redraw);
-- glutMouseFunc(mouse);
-- glutMotionFunc(mouseMotion);
-- glutVisibilityFunc(visible);
-- glutKeyboardFunc(key);
-- glutCreateMenu(menu);
-- glutAddMenuEntry("Reset time", 0);
-- glutAddMenuEntry("Constant", 1);
-- glutAddMenuEntry("Linear", 2);
-- glutAddMenuEntry("Quadratic", 3);
-- glutAddMenuEntry("Blend on", 4);
-- glutAddMenuEntry("Blend off", 5);
-- glutAddMenuEntry("Threshold 1", 6);
-- glutAddMenuEntry("Threshold 10", 7);
-- glutAddMenuEntry("Point smooth on", 8);
-- glutAddMenuEntry("Point smooth off", 9);
-- glutAddMenuEntry("Point size 16", 10);
-- glutAddMenuEntry("Point size 32", 11);
-- glutAddMenuEntry("Point size 64", 12);
-- glutAddMenuEntry("Toggle spin", 13);
-- glutAddMenuEntry("200 points ", 14);
-- glutAddMenuEntry("500 points ", 15);
-- glutAddMenuEntry("1000 points ", 16);
-- glutAddMenuEntry("2000 points ", 17);
-- glutAddMenuEntry("Quit", 666);
-- glutAttachMenu(GLUT_RIGHT_BUTTON);
--
-- makePointList();
-- makeSprite();
--
-- glShadeModel(GL_FLAT);
-- glEnable(GL_DEPTH_TEST);
-- glEnable(GL_POINT_SMOOTH);
-- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-- glPointSize(32.0);
--#ifdef GL_ARB_point_parameters
-- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
--#endif
--
-- glutMainLoop();
-- return 0; /* ANSI C requires main to return int. */
--}