Bläddra i källkod

added benchmarking

tags/mesa_3_3
Brian Paul 25 år sedan
förälder
incheckning
4f6d60e9cf
1 ändrade filer med 43 tillägg och 42 borttagningar
  1. 43
    42
      progs/demos/readpix.c

+ 43
- 42
progs/demos/readpix.c Visa fil

@@ -1,4 +1,4 @@
/* $Id: readpix.c,v 1.1 2000/03/01 16:23:14 brianp Exp $ */
/* $Id: readpix.c,v 1.2 2000/03/23 19:47:25 brianp Exp $ */

/*
* glReadPixels and glCopyPixels test
@@ -8,6 +8,9 @@

/*
* $Log: readpix.c,v $
* Revision 1.2 2000/03/23 19:47:25 brianp
* added benchmarking
*
* Revision 1.1 2000/03/01 16:23:14 brianp
* test glDraw/Read/CopyPixels()
*
@@ -34,7 +37,7 @@ static int CPosX, CPosY; /* copypixels */

static GLboolean DrawFront = GL_FALSE;
static GLboolean ScaleAndBias = GL_FALSE;
static GLboolean Benchmark = GL_FALSE;
static GLubyte *TempImage = NULL;


@@ -85,7 +88,7 @@ Display( void )
glClear( GL_COLOR_BUFFER_BIT );

glRasterPos2i(5, ImgHeight+25);
PrintString("f = toggle front/back b = toggle scale/bias");
PrintString("f = toggle front/back s = toggle scale/bias b = benchmark");

/* draw original image */
glRasterPos2i(APosX, 5);
@@ -99,8 +102,28 @@ Display( void )
glRasterPos2i(BPosX, 5);
PrintString("Read/DrawPixels");
SetupPixelTransfer(ScaleAndBias);
glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
ImgFormat, GL_UNSIGNED_BYTE, TempImage);
if (Benchmark) {
GLint reads = 0;
GLint endTime;
GLint startTime = glutGet(GLUT_ELAPSED_TIME);
GLdouble seconds, pixelsPerSecond;
printf("Benchmarking...\n");
do {
glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
ImgFormat, GL_UNSIGNED_BYTE, TempImage);
reads++;
endTime = glutGet(GLUT_ELAPSED_TIME);
} while (endTime - startTime < 4000); /* 4 seconds */
seconds = (double) (endTime - startTime) / 1000.0;
pixelsPerSecond = reads * ImgWidth * ImgHeight / seconds;
printf("Result: %d reads in %f seconds = %f pixels/sec\n",
reads, seconds, pixelsPerSecond);
Benchmark = GL_FALSE;
}
else {
glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
ImgFormat, GL_UNSIGNED_BYTE, TempImage);
}
glRasterPos2i(BPosX, BPosY);
glDisable(GL_DITHER);
SetupPixelTransfer(GL_FALSE);
@@ -119,7 +142,8 @@ Display( void )
}


static void Reshape( int width, int height )
static void
Reshape( int width, int height )
{
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
@@ -130,20 +154,28 @@ static void Reshape( int width, int height )
}


static void Key( unsigned char key, int x, int y )
static void
Key( unsigned char key, int x, int y )
{
(void) x;
(void) y;
switch (key) {
case 'b':
Benchmark = GL_TRUE;
break;
case 's':
ScaleAndBias = !ScaleAndBias;
break;
case 'f':
DrawFront = !DrawFront;
if (DrawFront)
if (DrawFront) {
glDrawBuffer(GL_FRONT);
else
glReadBuffer(GL_FRONT);
}
else {
glDrawBuffer(GL_BACK);
glReadBuffer(GL_BACK);
}
printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK");
break;
case 27:
@@ -154,30 +186,6 @@ static void Key( unsigned char key, int x, int y )
}


static void SpecialKey( int key, int x, int y )
{
(void) x;
(void) y;
#if 0
switch (key) {
case GLUT_KEY_UP:
Ypos += 1;
break;
case GLUT_KEY_DOWN:
Ypos -= 1;
break;
case GLUT_KEY_LEFT:
Xpos -= 1;
break;
case GLUT_KEY_RIGHT:
Xpos += 1;
break;
}
#endif
glutPostRedisplay();
}


static void
Init( GLboolean ciMode )
{
@@ -222,32 +230,25 @@ Init( GLboolean ciMode )
}


int main( int argc, char *argv[] )
int
main( int argc, char *argv[] )
{
GLboolean ciMode = GL_FALSE;

if (argc > 1 && strcmp(argv[1], "-ci")==0) {
ciMode = GL_TRUE;
}

glutInit( &argc, argv );
glutInitWindowPosition( 0, 0 );
glutInitWindowSize( 750, 250 );

if (ciMode)
glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE );
else
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );

glutCreateWindow(argv[0]);

Init(ciMode);

glutReshapeFunc( Reshape );
glutKeyboardFunc( Key );
glutSpecialFunc( SpecialKey );
glutDisplayFunc( Display );

glutMainLoop();
return 0;
}

Laddar…
Avbryt
Spara