void renderCamSetupGL ( Scene& scene, int prog ) { // Set model, view, projection matrices Camera3D* cam = scene.getCamera (); Matrix4F ident; ident.Identity(); glProgramUniformMatrix4fv( prog, scene.getParam(prog, UMODEL), 1, GL_FALSE, ident.GetDataF() ); glProgramUniformMatrix4fv( prog, scene.getParam(prog, UVIEW), 1, GL_FALSE, cam->getViewMatrix().GetDataF() ); glProgramUniformMatrix4fv( prog, scene.getParam(prog, UPROJ), 1, GL_FALSE, cam->getProjMatrix().GetDataF() ); }
void glut_render(void) { //setup camera static Matrix4 viewMat; static Matrix4 MVP; cam.getViewMatrix(viewMat); MVP = projMat * viewMat; glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadMatrixf(MVP.toFloatPtr()); const float screenRatio = (float)screenHeight/(float)screenWidth; //begin frame glClearColor(0.0,0.0,0.0,0.0); glClearDepth(1.0); glClear(GL_COLOR_BUFFER_BIT); #ifdef GL_TIMER_QUERY_PERFORMANCE_MEASURE glBeginQuery(GL_TIME_ELAPSED,query); #endif //render lines using additive blending and selected rendering path glDisable(GL_DEPTH_TEST); glDepthMask(GL_FALSE); ///////////// TODO RENDER glColor3f(1.0f,1.0f,1.0f); // glutWireTeapot(1.0); switch(renderingMethod) { case 0: testInstancing->render(TEST_INSTANCING_MAX_INSTANCE,NULL,MVP.toFloatPtr(),viewMat.toFloatPtr(),projMat.toFloatPtr()); break; case 1: testInstancing->render(TEST_INSTANCING_MAX_INSTANCE,trianglePosition,MVP.toFloatPtr(),viewMat.toFloatPtr(),projMat.toFloatPtr()); break; case 2: testInstancing->renderInstancing(TEST_INSTANCING_MAX_INSTANCE,NULL,MVP.toFloatPtr(),viewMat.toFloatPtr(),projMat.toFloatPtr()); break; case 3: testInstancing->renderInstancing(TEST_INSTANCING_MAX_INSTANCE,trianglePosition,MVP.toFloatPtr(),viewMat.toFloatPtr(),projMat.toFloatPtr()); break; default: break; } #ifdef GL_TIMER_QUERY_PERFORMANCE_MEASURE glEndQuery(GL_TIME_ELAPSED); int done=0; while (!done) { glGetQueryObjectiv(query, GL_QUERY_RESULT_AVAILABLE, &done); } // get the query result glGetQueryObjectui64v(query, GL_QUERY_RESULT, &elapsed_time); deltaTimeAccu+=elapsed_time; deltaTimeAccuCount++; #endif //end of frame glFlush(); glutSwapBuffers(); glutPostRedisplay(); #ifdef _DEBUG GLenum err = glGetError(); if(err!=GL_NONE) { // printf("OpenGL error!\n"); } #endif }