X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=progs%2Fdemos%2Fdrawpix.c;h=82d32b0705c29b8a1204c81f7fe4d4bd06704ad9;hb=a1a6fa2fa18c4982aa8151042df7d04551e47981;hp=264df71ab4e6ad9ff72460c599978dbfc729262f;hpb=afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1c;p=mesa.git diff --git a/progs/demos/drawpix.c b/progs/demos/drawpix.c index 264df71ab4e..82d32b0705c 100644 --- a/progs/demos/drawpix.c +++ b/progs/demos/drawpix.c @@ -1,4 +1,3 @@ -/* $Id: drawpix.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ /* * glDrawPixels demo/test/benchmark @@ -6,32 +5,13 @@ * Brian Paul September 25, 1997 This file is in the public domain. */ -/* - * $Log: drawpix.c,v $ - * Revision 1.1 1999/08/19 00:55:40 jtg - * Initial revision - * - * Revision 3.3 1999/03/28 18:18:33 brianp - * minor clean-up - * - * Revision 3.2 1998/11/05 04:34:04 brianp - * moved image files to ../images/ directory - * - * Revision 3.1 1998/02/22 16:43:17 brianp - * added a few casts to silence compiler warnings - * - * Revision 3.0 1998/02/14 18:42:29 brianp - * initial rev - * - */ - - #include #include #include +#include #include -#include "../util/readtex.c" /* a hack, I know */ +#include "readtex.h" #define IMAGE_FILE "../images/girl.rgb" @@ -43,8 +23,11 @@ static int Xpos, Ypos; static int SkipPixels, SkipRows; static int DrawWidth, DrawHeight; static int Scissor = 0; +static int Fog = 0; +static GLfloat Zpos = -1.0; static float Xzoom, Yzoom; - +static GLboolean DrawFront = GL_FALSE; +static GLboolean Dither = GL_TRUE; static void Reset( void ) @@ -54,6 +37,8 @@ static void Reset( void ) DrawHeight = ImgHeight; SkipPixels = SkipRows = 0; Scissor = 0; + Fog = 0; + Zpos = -1.0; Xzoom = Yzoom = 1.0; } @@ -66,7 +51,7 @@ static void Display( void ) glRasterPos2i(Xpos, Ypos); #else /* This allows negative raster positions: */ - glRasterPos2i(0, 0); + glRasterPos3f(0, 0, Zpos); glBitmap(0, 0, 0, 0, Xpos, Ypos, NULL); #endif @@ -78,11 +63,16 @@ static void Display( void ) if (Scissor) glEnable(GL_SCISSOR_TEST); + if (Fog) + glEnable(GL_FOG); + glDrawPixels(DrawWidth, DrawHeight, ImgFormat, GL_UNSIGNED_BYTE, Image); glDisable(GL_SCISSOR_TEST); + glDisable(GL_FOG); - glutSwapBuffers(); + if (!DrawFront) + glutSwapBuffers(); } @@ -99,6 +89,13 @@ static void Benchmark( void ) glPixelZoom( Xzoom, Yzoom ); if (Scissor) glEnable(GL_SCISSOR_TEST); + if (Fog) + glEnable(GL_FOG); + + if (DrawFront) + glDrawBuffer(GL_FRONT); + else + glDrawBuffer(GL_BACK); /* Run timing test */ draws = 0; @@ -111,6 +108,7 @@ static void Benchmark( void ) /* GL clean-up */ glDisable(GL_SCISSOR_TEST); + glDisable(GL_FOG); /* Results */ seconds = (double) (endTime - startTime) / 1000.0; @@ -125,7 +123,7 @@ static void Reshape( int width, int height ) glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); - glOrtho( 0.0, width, 0.0, height, -1.0, 1.0 ); + glOrtho( 0.0, width, 0.0, height, 0.0, 2.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); @@ -141,6 +139,13 @@ static void Key( unsigned char key, int x, int y ) case ' ': Reset(); break; + case 'd': + Dither = !Dither; + if (Dither) + glEnable(GL_DITHER); + else + glDisable(GL_DITHER); + break; case 'w': if (DrawWidth > 0) DrawWidth--; @@ -184,9 +189,29 @@ static void Key( unsigned char key, int x, int y ) case 'Y': Yzoom += 0.1; break; + case 'z': + Zpos -= 0.1; + printf("RasterPos Z = %g\n", Zpos); + break; + case 'Z': + Zpos += 0.1; + printf("RasterPos Z = %g\n", Zpos); + break; case 'b': Benchmark(); break; + case 'F': + Fog = !Fog; + printf("Fog %d\n", Fog); + break; + case 'f': + DrawFront = !DrawFront; + if (DrawFront) + glDrawBuffer(GL_FRONT); + else + glDrawBuffer(GL_BACK); + printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK"); + break; case 27: exit(0); break; @@ -217,20 +242,22 @@ static void SpecialKey( int key, int x, int y ) } -static void Init( GLboolean ciMode ) +static void Init( GLboolean ciMode, const char *filename ) { + static const GLfloat fogColor[4] = {0, 1, 0, 0}; + printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - Image = LoadRGBImage( IMAGE_FILE, &ImgWidth, &ImgHeight, &ImgFormat ); + Image = LoadRGBImage( filename, &ImgWidth, &ImgHeight, &ImgFormat ); if (!Image) { - printf("Couldn't read %s\n", IMAGE_FILE); + printf("Couldn't read %s\n", filename); exit(0); } if (ciMode) { /* Convert RGB image to grayscale */ - GLubyte *indexImage = malloc( ImgWidth * ImgHeight ); + GLubyte *indexImage = (GLubyte *) malloc( ImgWidth * ImgHeight ); GLint i; for (i=0; i 1 && strcmp(argv[1], "-ci")==0) { + if (argc > i && strcmp(argv[i], "-ci")==0) { ciMode = GL_TRUE; + i++; + } + if (argc > i) { + filename = argv[i]; } glutInit( &argc, argv ); @@ -290,11 +339,11 @@ int main( int argc, char *argv[] ) if (ciMode) glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE ); else - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); + glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE); glutCreateWindow(argv[0]); - Init(ciMode); + Init(ciMode, filename); Usage(); glutReshapeFunc( Reshape );