~ubuntu-branches/ubuntu/oneiric/mesa-demos/oneiric

« back to all changes in this revision

Viewing changes to src/tests/cva.c

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2010-09-27 16:18:27 UTC
  • Revision ID: james.westby@ubuntu.com-20100927161827-1yfgolc1oy9sjhi8
Tags: upstream-8.0.1
ImportĀ upstreamĀ versionĀ 8.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/*
 
3
 * Trivial CVA test, good for testing driver fastpaths (especially
 
4
 * indexed vertex buffers if they are supported).
 
5
 *
 
6
 * Gareth Hughes
 
7
 * November 2000
 
8
 */
 
9
 
 
10
#include <stdlib.h>
 
11
#include <stdio.h>
 
12
#include <string.h>
 
13
#include <stddef.h>     /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */
 
14
#ifdef _WIN32
 
15
#include <windows.h>
 
16
#endif
 
17
#define GL_GLEXT_LEGACY
 
18
#include <GL/glew.h>
 
19
#include <GL/glut.h>
 
20
 
 
21
GLfloat verts[][4] = {
 
22
   { -0.5, -0.5, -2.0, 0.0 },
 
23
   {  0.5, -0.5, -2.0, 0.0 },
 
24
   { -0.5,  0.5, -2.0, 0.0 },
 
25
   {  0.5,  0.5, -2.0, 0.0 },
 
26
};
 
27
 
 
28
GLubyte color[][4] = {
 
29
   { 0xff, 0x00, 0x00, 0x00 },
 
30
   { 0x00, 0xff, 0x00, 0x00 },
 
31
   { 0x00, 0x00, 0xff, 0x00 },
 
32
   { 0xff, 0xff, 0xff, 0x00 },
 
33
};
 
34
 
 
35
GLuint indices[] = { 0, 1, 2, 3 };
 
36
 
 
37
GLboolean compiled = GL_TRUE;
 
38
GLboolean doubleBuffer = GL_TRUE;
 
39
 
 
40
 
 
41
static void init( void )
 
42
{
 
43
   glClearColor( 0.0, 0.0, 0.0, 0.0 );
 
44
   glShadeModel( GL_SMOOTH );
 
45
 
 
46
   glFrontFace( GL_CCW );
 
47
   glCullFace( GL_BACK );
 
48
   glEnable( GL_CULL_FACE );
 
49
 
 
50
   glEnable( GL_DEPTH_TEST );
 
51
 
 
52
   glEnableClientState( GL_VERTEX_ARRAY );
 
53
   glEnableClientState( GL_COLOR_ARRAY );
 
54
 
 
55
   glMatrixMode( GL_PROJECTION );
 
56
   glLoadIdentity();
 
57
   glFrustum( -1.0, 1.0, -1.0, 1.0, 2.0, 10.0 );
 
58
   glMatrixMode( GL_MODELVIEW );
 
59
   glLoadIdentity();
 
60
 
 
61
   glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts );
 
62
   glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color );
 
63
 
 
64
#ifdef GL_EXT_compiled_vertex_array
 
65
   if ( compiled ) {
 
66
      glLockArraysEXT( 0, 4 );
 
67
   }
 
68
#endif
 
69
}
 
70
 
 
71
static void display( void )
 
72
{
 
73
   glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 
74
 
 
75
   glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices );
 
76
 
 
77
   glFlush();
 
78
   if ( doubleBuffer ) {
 
79
      glutSwapBuffers();
 
80
   }
 
81
}
 
82
 
 
83
static void keyboard( unsigned char key, int x, int y )
 
84
{
 
85
   switch ( key ) {
 
86
      case 27:
 
87
         exit( 0 );
 
88
         break;
 
89
   }
 
90
 
 
91
   glutPostRedisplay();
 
92
}
 
93
 
 
94
static GLboolean args( int argc, char **argv )
 
95
{
 
96
    GLint i;
 
97
 
 
98
    doubleBuffer = GL_TRUE;
 
99
 
 
100
    for ( i = 1 ; i < argc ; i++ ) {
 
101
        if ( strcmp( argv[i], "-sb" ) == 0 ) {
 
102
            doubleBuffer = GL_FALSE;
 
103
        } else if ( strcmp( argv[i], "-db" ) == 0 ) {
 
104
            doubleBuffer = GL_TRUE;
 
105
        } else {
 
106
            fprintf( stderr, "%s (Bad option).\n", argv[i] );
 
107
            return GL_FALSE;
 
108
        }
 
109
    }
 
110
    return GL_TRUE;
 
111
}
 
112
 
 
113
int main( int argc, char **argv )
 
114
{
 
115
   GLenum type;
 
116
   char *string;
 
117
   double version;
 
118
 
 
119
   glutInit( &argc, argv );
 
120
 
 
121
   if ( args( argc, argv ) == GL_FALSE ) {
 
122
      exit( 1 );
 
123
   }
 
124
 
 
125
   type = GLUT_RGB | GLUT_DEPTH;
 
126
   type |= ( doubleBuffer ) ? GLUT_DOUBLE : GLUT_SINGLE;
 
127
 
 
128
   glutInitDisplayMode( type );
 
129
   glutInitWindowSize( 250, 250 );
 
130
   glutInitWindowPosition( 100, 100 );
 
131
   glutCreateWindow( "CVA Test" );
 
132
   glewInit();
 
133
 
 
134
   /* Make sure the server supports GL 1.2 vertex arrays.
 
135
    */
 
136
   string = (char *) glGetString( GL_VERSION );
 
137
 
 
138
   version = atof(string);
 
139
   if ( version < 1.2 ) {
 
140
      fprintf( stderr, "This program requires OpenGL 1.2 vertex arrays.\n" );
 
141
      exit( -1 );
 
142
   }
 
143
 
 
144
   /* See if the server supports compiled vertex arrays.
 
145
    */
 
146
   string = (char *) glGetString( GL_EXTENSIONS );
 
147
 
 
148
   if ( !strstr( string, "GL_EXT_compiled_vertex_array" ) ) {
 
149
      fprintf( stderr, "Compiled vertex arrays not supported by this renderer.\n" );
 
150
      compiled = GL_FALSE;
 
151
   }
 
152
 
 
153
   init();
 
154
 
 
155
   glutDisplayFunc( display );
 
156
   glutKeyboardFunc( keyboard );
 
157
   glutMainLoop();
 
158
 
 
159
   return 0;
 
160
}