Clone of mesa.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

cva.c 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /* $Id: cva.c,v 1.7 2003/12/08 09:03:35 joukj Exp $ */
  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. #include <stdlib.h>
  10. #include <stdio.h>
  11. #include <string.h>
  12. #ifdef __VMS
  13. # include <stddef.h> /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */
  14. #else
  15. # include <malloc.h> /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */
  16. #endif
  17. #ifdef _WIN32
  18. #include <windows.h>
  19. #endif
  20. #define GL_GLEXT_LEGACY
  21. #include <GL/glut.h>
  22. GLfloat verts[][4] = {
  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. { 0.5, 0.5, -2.0, 0.0 },
  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. GLuint indices[] = { 0, 1, 2, 3 };
  35. GLboolean compiled = GL_TRUE;
  36. GLboolean doubleBuffer = GL_TRUE;
  37. void init( void )
  38. {
  39. glClearColor( 0.0, 0.0, 0.0, 0.0 );
  40. glShadeModel( GL_SMOOTH );
  41. glFrontFace( GL_CCW );
  42. glCullFace( GL_BACK );
  43. glEnable( GL_CULL_FACE );
  44. glEnable( GL_DEPTH_TEST );
  45. glEnableClientState( GL_VERTEX_ARRAY );
  46. glEnableClientState( GL_COLOR_ARRAY );
  47. glMatrixMode( GL_PROJECTION );
  48. glLoadIdentity();
  49. glFrustum( -1.0, 1.0, -1.0, 1.0, 2.0, 10.0 );
  50. glMatrixMode( GL_MODELVIEW );
  51. glLoadIdentity();
  52. glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts );
  53. glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color );
  54. #ifdef GL_EXT_compiled_vertex_array
  55. if ( compiled ) {
  56. glLockArraysEXT( 0, 4 );
  57. }
  58. #endif
  59. }
  60. void display( void )
  61. {
  62. glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
  63. glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices );
  64. glFlush();
  65. if ( doubleBuffer ) {
  66. glutSwapBuffers();
  67. }
  68. }
  69. void keyboard( unsigned char key, int x, int y )
  70. {
  71. switch ( key ) {
  72. case 27:
  73. exit( 0 );
  74. break;
  75. }
  76. glutPostRedisplay();
  77. }
  78. GLboolean args( int argc, char **argv )
  79. {
  80. GLint i;
  81. doubleBuffer = GL_TRUE;
  82. for ( i = 1 ; i < argc ; i++ ) {
  83. if ( strcmp( argv[i], "-sb" ) == 0 ) {
  84. doubleBuffer = GL_FALSE;
  85. } else if ( strcmp( argv[i], "-db" ) == 0 ) {
  86. doubleBuffer = GL_TRUE;
  87. } else {
  88. fprintf( stderr, "%s (Bad option).\n", argv[i] );
  89. return GL_FALSE;
  90. }
  91. }
  92. return GL_TRUE;
  93. }
  94. int main( int argc, char **argv )
  95. {
  96. GLenum type;
  97. char *string;
  98. glutInit( &argc, argv );
  99. if ( args( argc, argv ) == GL_FALSE ) {
  100. exit( 1 );
  101. }
  102. type = GLUT_RGB | GLUT_DEPTH;
  103. type |= ( doubleBuffer ) ? GLUT_DOUBLE : GLUT_SINGLE;
  104. glutInitDisplayMode( type );
  105. glutInitWindowSize( 250, 250 );
  106. glutInitWindowPosition( 100, 100 );
  107. glutCreateWindow( "CVA Test" );
  108. /* Make sure the server supports GL 1.2 vertex arrays.
  109. */
  110. string = (char *) glGetString( GL_VERSION );
  111. if ( !strstr(string, "1.2") &&
  112. !strstr(string, "1.3") &&
  113. !strstr(string, "1.4")) {
  114. fprintf( stderr, "This program requires OpenGL 1.2 vertex arrays.\n" );
  115. exit( -1 );
  116. }
  117. /* See if the server supports compiled vertex arrays.
  118. */
  119. string = (char *) glGetString( GL_EXTENSIONS );
  120. if ( !strstr( string, "GL_EXT_compiled_vertex_array" ) ) {
  121. fprintf( stderr, "Compiled vertex arrays not supported by this renderer.\n" );
  122. compiled = GL_FALSE;
  123. }
  124. init();
  125. glutDisplayFunc( display );
  126. glutKeyboardFunc( keyboard );
  127. glutMainLoop();
  128. return 0;
  129. }