Advertisement
Guest User

Untitled

a guest
Aug 5th, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.93 KB | None | 0 0
  1. static void redraw(void) {
  2.     static float t=0;
  3.     int a,b;
  4.     unsigned int currentVer;
  5.  
  6.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  7.  
  8.     glClearColor(0.2f, 0.1f, 0.0f, 0.0f);
  9.  
  10.     if (wireframe)
  11.         glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
  12.    
  13.     glShadeModel(GL_SMOOTH);
  14.  
  15.     glUseProgram(theProgram);
  16.    
  17.     glBindBuffer(GL_ARRAY_BUFFER, cubeVertBuffer);
  18.     glEnableVertexAttribArray(0);
  19.     glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
  20.  
  21.     glBindBuffer(GL_ARRAY_BUFFER, cubeNormalBuffer);
  22.     glEnableVertexAttribArray(1);
  23.     glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, 0);
  24.  
  25.     setUniforms(t);
  26.  
  27.     glBindBuffer( GL_ARRAY_BUFFER, tfvbo );
  28.  
  29.     glBeginQuery( GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT, query );
  30.  
  31.     // start transform feedback so that vertices get targetted to 'tfvbo'
  32.     glBeginTransformFeedbackNV( GL_TRIANGLES );
  33.  
  34.  
  35.  
  36.     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cubeIndexBO);
  37.     glDrawElements(GL_TRIANGLES, sCube.ids.size(), GL_UNSIGNED_INT, NULL);
  38.  
  39.     glEndTransformFeedbackNV();
  40.     glEndQuery( GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT );
  41.  
  42.     GLuint primitives_written;
  43.     // read back query results
  44.     glGetQueryObjectuiv( query, GL_QUERY_RESULT, &primitives_written );
  45.     if ( primitives_written == 0 )
  46.         fprintf( stderr, "Primitives written to TFB: %d !\n", primitives_written );
  47.    
  48.     // retrieve the data stored in the TFB
  49.     checkGlErrors();
  50.     glBindBuffer( GL_ARRAY_BUFFER, tfvbo );
  51.     float * TFBdata = static_cast<float*>( glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY) );
  52.     if ( TFBdata == NULL ) {
  53.         cout << "TFBdata == NULL\n";
  54.         checkGlErrors();
  55.     }
  56.     else
  57.     {
  58.         // fputs("TFB contents: ", stdout);
  59.         // for ( int i = 0; i < 2*3*4; i ++ )
  60.         //  printf( "% 10f  ", TFBdata[i] );
  61.         // putchar('\n');
  62.     }
  63.     bool success = glUnmapBuffer( GL_ARRAY_BUFFER );
  64.     if ( ! success ) {
  65.         cout << "glUnmapBuffer failed";
  66.         checkGlErrors();
  67.         cout << endl << endl;
  68.     }
  69.  
  70.     glDisableVertexAttribArray(0);
  71.     glDisableVertexAttribArray(1);
  72.     glUseProgram(0);
  73.    
  74.     glutSwapBuffers();
  75.     glutPostRedisplay();
  76.  
  77.     t+=rSpeed;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement