X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=progs%2Ftests%2Fcva.c;h=a47b2a9319a3f6f09975d7360e58ec2760c70c74;hb=789fae163dbdbd7669b0442bd1a3ca4fea4ec259;hp=380f198563bda6828d02c65c28b2ddda039c3bc4;hpb=5f5632c42497f2784fbae23fd3bc11c9e326597a;p=mesa.git diff --git a/progs/tests/cva.c b/progs/tests/cva.c index 380f198563b..a47b2a9319a 100644 --- a/progs/tests/cva.c +++ b/progs/tests/cva.c @@ -1,4 +1,3 @@ -/* $Id: cva.c,v 1.2 2000/11/03 00:09:31 gareth Exp $ */ /* * Trivial CVA test, good for testing driver fastpaths (especially @@ -11,6 +10,14 @@ #include #include #include +#ifdef __VMS +# include /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */ +#else +# include /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */ +#endif +#ifdef _WIN32 +#include +#endif #define GL_GLEXT_LEGACY #include @@ -19,17 +26,20 @@ GLfloat verts[][4] = { { -0.5, -0.5, -2.0, 0.0 }, { 0.5, -0.5, -2.0, 0.0 }, { -0.5, 0.5, -2.0, 0.0 }, + { 0.5, 0.5, -2.0, 0.0 }, }; GLubyte color[][4] = { { 0xff, 0x00, 0x00, 0x00 }, { 0x00, 0xff, 0x00, 0x00 }, { 0x00, 0x00, 0xff, 0x00 }, + { 0xff, 0xff, 0xff, 0x00 }, }; -GLuint indices[] = { 0, 1, 2 }; +GLuint indices[] = { 0, 1, 2, 3 }; GLboolean compiled = GL_TRUE; +GLboolean doubleBuffer = GL_TRUE; void init( void ) @@ -37,6 +47,10 @@ void init( void ) glClearColor( 0.0, 0.0, 0.0, 0.0 ); glShadeModel( GL_SMOOTH ); + glFrontFace( GL_CCW ); + glCullFace( GL_BACK ); + glEnable( GL_CULL_FACE ); + glEnable( GL_DEPTH_TEST ); glEnableClientState( GL_VERTEX_ARRAY ); @@ -53,7 +67,7 @@ void init( void ) #ifdef GL_EXT_compiled_vertex_array if ( compiled ) { - glLockArraysEXT( 0, 3 ); + glLockArraysEXT( 0, 4 ); } #endif } @@ -65,6 +79,9 @@ void display( void ) glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices ); glFlush(); + if ( doubleBuffer ) { + glutSwapBuffers(); + } } void keyboard( unsigned char key, int x, int y ) @@ -74,14 +91,45 @@ void keyboard( unsigned char key, int x, int y ) exit( 0 ); break; } + + glutPostRedisplay(); +} + +GLboolean args( int argc, char **argv ) +{ + GLint i; + + doubleBuffer = GL_TRUE; + + for ( i = 1 ; i < argc ; i++ ) { + if ( strcmp( argv[i], "-sb" ) == 0 ) { + doubleBuffer = GL_FALSE; + } else if ( strcmp( argv[i], "-db" ) == 0 ) { + doubleBuffer = GL_TRUE; + } else { + fprintf( stderr, "%s (Bad option).\n", argv[i] ); + return GL_FALSE; + } + } + return GL_TRUE; } int main( int argc, char **argv ) { + GLenum type; char *string; + double version; glutInit( &argc, argv ); - glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH ); + + if ( args( argc, argv ) == GL_FALSE ) { + exit( 1 ); + } + + type = GLUT_RGB | GLUT_DEPTH; + type |= ( doubleBuffer ) ? GLUT_DOUBLE : GLUT_SINGLE; + + glutInitDisplayMode( type ); glutInitWindowSize( 250, 250 ); glutInitWindowPosition( 100, 100 ); glutCreateWindow( "CVA Test" ); @@ -90,7 +138,8 @@ int main( int argc, char **argv ) */ string = (char *) glGetString( GL_VERSION ); - if ( !strstr( string, "1.2" ) ) { + version = atof(string); + if ( version < 1.2 ) { fprintf( stderr, "This program requires OpenGL 1.2 vertex arrays.\n" ); exit( -1 ); }