diff options
Diffstat (limited to 'progs')
-rw-r--r-- | progs/demos/spriteblast.c | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/progs/demos/spriteblast.c b/progs/demos/spriteblast.c index f1eee697242..4e1d86cdd08 100644 --- a/progs/demos/spriteblast.c +++ b/progs/demos/spriteblast.c @@ -56,7 +56,7 @@ 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 int animate = 1, motion = 0, org = 0, sprite = 1, smooth = 1; static GLfloat colorSet[][4] = { /* Shades of red. */ @@ -240,17 +240,19 @@ redraw(void) if (blend) glEnable(GL_BLEND); - glEnable(GL_TEXTURE_2D); + if (sprite) { + glEnable(GL_TEXTURE_2D); #ifdef GL_ARB_point_sprite - glEnable(GL_POINT_SPRITE_ARB); + 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) { - /*glColor4fv(colorSet[colorList[i]]);*/ + if (!sprite) glColor4fv(colorSet[colorList[i]]); glVertex3fv(pointList[i]); } } @@ -326,9 +328,11 @@ menu(int option) #endif case 8: glEnable(GL_POINT_SMOOTH); + smooth = 1; break; case 9: glDisable(GL_POINT_SMOOTH); + smooth = 0; break; case 10: glPointSize(4.0); @@ -383,6 +387,47 @@ key(unsigned char c, int x, int y) makePointList(); glutIdleFunc(idle); break; + case 'o': + case 'O': + org ^= 1; +#if GL_VERSION_2_0 +#if 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(2.0); + glutPostRedisplay(); + break; + case '2': + glPointSize(4.0); + glutPostRedisplay(); + break; + case '3': + glPointSize(8.0); + glutPostRedisplay(); + break; + case '4': + glPointSize(16.0); + glutPostRedisplay(); + break; case 27: exit(0); } |