-/* $Id: drawpix.c,v 1.5 2000/12/24 22:53:54 pesco Exp $ */
+/* $Id: drawpix.c,v 1.6 2002/01/26 17:49:30 brianp Exp $ */
/*
* glDrawPixels demo/test/benchmark
/*
* $Log: drawpix.c,v $
+ * Revision 1.6 2002/01/26 17:49:30 brianp
+ * added fog and raster Z position controls
+ *
* Revision 1.5 2000/12/24 22:53:54 pesco
* * demos/Makefile.am (INCLUDES): Added -I$(top_srcdir)/util.
* * demos/Makefile.X11, demos/Makefile.BeOS-R4, demos/Makefile.cygnus:
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;
DrawHeight = ImgHeight;
SkipPixels = SkipRows = 0;
Scissor = 0;
+ Fog = 0;
+ Zpos = -1.0;
Xzoom = Yzoom = 1.0;
}
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
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);
if (!DrawFront)
glutSwapBuffers();
glPixelZoom( Xzoom, Yzoom );
if (Scissor)
glEnable(GL_SCISSOR_TEST);
+ if (Fog)
+ glEnable(GL_FOG);
if (DrawFront)
glDrawBuffer(GL_FRONT);
/* GL clean-up */
glDisable(GL_SCISSOR_TEST);
+ glDisable(GL_FOG);
/* Results */
seconds = (double) (endTime - startTime) / 1000.0;
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();
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)
static void Init( GLboolean ciMode )
{
+ 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));
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth);
+ glFogi(GL_FOG_MODE, GL_LINEAR);
+ glFogf(GL_FOG_START, 0);
+ glFogf(GL_FOG_END, 2);
+ glFogfv(GL_FOG_COLOR, fogColor);
+
Reset();
}
printf(" r Decrease GL_UNPACK_SKIP_ROWS*\n");
printf(" R Increase GL_UNPACK_SKIP_ROWS*\n");
printf(" s Toggle GL_SCISSOR_TEST\n");
+ printf(" F Toggle GL_FOG\n");
+ printf(" z Decrease RasterPos Z\n");
+ printf(" Z Increase RasterPos Z\n");
+
printf(" f Toggle front/back buffer drawing\n");
printf(" b Benchmark test\n");
printf(" ESC Exit\n");