diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-04-07 00:46:34 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-04-07 00:46:34 -0400 |
commit | 619b8d955269f2fe74386e98fac07675c8b55352 (patch) | |
tree | f3e2610a39c99a7e43bc2b345280b04e398b986a /libre/lib32-mesa-demos-libre | |
parent | 2b04539ac9310541a4e563460aed0cb7715770d2 (diff) | |
parent | 7d4e98b2d6f2fd4d42ebb55105bab8a05e34ab94 (diff) | |
download | abslibre-619b8d955269f2fe74386e98fac07675c8b55352.tar.gz abslibre-619b8d955269f2fe74386e98fac07675c8b55352.tar.bz2 abslibre-619b8d955269f2fe74386e98fac07675c8b55352.zip |
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/abslibre
Diffstat (limited to 'libre/lib32-mesa-demos-libre')
-rw-r--r-- | libre/lib32-mesa-demos-libre/PKGBUILD | 26 | ||||
-rw-r--r-- | libre/lib32-mesa-demos-libre/mesa-demos-libre.patch | 1198 |
2 files changed, 77 insertions, 1147 deletions
diff --git a/libre/lib32-mesa-demos-libre/PKGBUILD b/libre/lib32-mesa-demos-libre/PKGBUILD index 1719f138d..aa9fde2c3 100644 --- a/libre/lib32-mesa-demos-libre/PKGBUILD +++ b/libre/lib32-mesa-demos-libre/PKGBUILD @@ -1,25 +1,24 @@ -# $Id: PKGBUILD 94667 2010-10-09 11:21:35Z andyrtr $ +# $Id: PKGBUILD 178740 2013-02-26 16:15:13Z andyrtr $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Maintainer: Andreas Radke <andyrtr@archlinux.org> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgbasename=mesa-demos-libre pkgname=lib32-$_pkgbasename -pkgver=8.0.1 -pkgrel=2 +pkgver=8.1.0 +pkgrel=1 arch=(x86_64) -pkgdesc="Mesa demos and tools (32-bit), libre" +pkgdesc="Mesa demos and tools (32-bit), without nonfree demos" url="http://mesa3d.sourceforge.net" license=('custom') -depends=('lib32-glew>=1.5.6' mesa-demos-libre) provides=("lib32-mesa-demos=$pkgver") replaces=('lib32-mesa-demos') conflicts=('lib32-mesa-demos') -makedepends=(gcc-multilib) +makedepends=(gcc-multilib 'lib32-mesa-libgl>=9.1' 'lib32-glew' 'libgl>=9.1') source=(ftp://ftp.freedesktop.org/pub/mesa/demos/${pkgver}/mesa-demos-${pkgver}.tar.bz2 mesa-demos-libre.patch) -md5sums=('320c2a4b6edc6faba35d9cb1e2a30bf4' - '1858e95d40ac9e5e0b59753ce9e673e3') +md5sums=('9df33ba69a26bbfbc7c8148602e59542' + '5ce0660b46beb1230194fbd852d33ab0') build() { export CC="gcc -m32" @@ -27,12 +26,21 @@ build() { export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" 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 + + ./configure --prefix=/usr \ + --enable-gles1 \ + --enable-gles2 + make } package() { + depends=('lib32-glew' mesa-demos-libre) + cd "${srcdir}/mesa-demos-${pkgver}" make DESTDIR="${pkgdir}" install diff --git a/libre/lib32-mesa-demos-libre/mesa-demos-libre.patch b/libre/lib32-mesa-demos-libre/mesa-demos-libre.patch index c5261f8e9..d630f373c 100644 --- a/libre/lib32-mesa-demos-libre/mesa-demos-libre.patch +++ b/libre/lib32-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. */ --} |