Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void redraw(void) {
- static float t=0;
- int a,b;
- unsigned int currentVer;
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glClearColor(0.2f, 0.1f, 0.0f, 0.0f);
- if (wireframe)
- glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
- glShadeModel(GL_SMOOTH);
- glUseProgram(theProgram);
- glBindBuffer(GL_ARRAY_BUFFER, cubeVertBuffer);
- glEnableVertexAttribArray(0);
- glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ARRAY_BUFFER, cubeNormalBuffer);
- glEnableVertexAttribArray(1);
- glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, 0);
- setUniforms(t);
- glBindBuffer( GL_ARRAY_BUFFER, tfvbo );
- glBeginQuery( GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT, query );
- // start transform feedback so that vertices get targetted to 'tfvbo'
- glBeginTransformFeedbackNV( GL_TRIANGLES );
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cubeIndexBO);
- glDrawElements(GL_TRIANGLES, sCube.ids.size(), GL_UNSIGNED_INT, NULL);
- glEndTransformFeedbackNV();
- glEndQuery( GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT );
- GLuint primitives_written;
- // read back query results
- glGetQueryObjectuiv( query, GL_QUERY_RESULT, &primitives_written );
- if ( primitives_written == 0 )
- fprintf( stderr, "Primitives written to TFB: %d !\n", primitives_written );
- // retrieve the data stored in the TFB
- checkGlErrors();
- glBindBuffer( GL_ARRAY_BUFFER, tfvbo );
- float * TFBdata = static_cast<float*>( glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY) );
- if ( TFBdata == NULL ) {
- cout << "TFBdata == NULL\n";
- checkGlErrors();
- }
- else
- {
- // fputs("TFB contents: ", stdout);
- // for ( int i = 0; i < 2*3*4; i ++ )
- // printf( "% 10f ", TFBdata[i] );
- // putchar('\n');
- }
- bool success = glUnmapBuffer( GL_ARRAY_BUFFER );
- if ( ! success ) {
- cout << "glUnmapBuffer failed";
- checkGlErrors();
- cout << endl << endl;
- }
- glDisableVertexAttribArray(0);
- glDisableVertexAttribArray(1);
- glUseProgram(0);
- glutSwapBuffers();
- glutPostRedisplay();
- t+=rSpeed;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement