void render() { GameState* gamestate; if( !should_render() ) return; // Get the gamestate gamestate = get_gamestate(); // Set the default buffer colour to black glClearColor( SKY_R, SKY_G, SKY_B, 1.0f ); // Clear the colour and depth buffers glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); // Draw player 1's viewport render_viewport( player1_viewport, gamestate ); // Draw player 2's viewport render_viewport( player2_viewport, gamestate ); // Turn off depth buffering for the minimap and HUD glDisable(GL_DEPTH_TEST); render_viewport( minimap, gamestate ); render_hud( hud, gamestate ); glEnable(GL_DEPTH_TEST); // Swap the buffers glutSwapBuffers(); // Calculate the framerate calc_fps(); }
void render_frame (Render* render, Game* game) { display_start_frame (0,0,0); if (game != NULL) { float hit = ship_hit(&game->player); if(hit < .9) { // avoid drawing the cave from outside glPushMatrix(); render_world_transform (render, &game->player); cave_model (render, &game->cave, DISPLAYMODE_NORMAL, 0); monolith_model (render, game); glPopMatrix(); } if(hit) { glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); glDisable (GL_TEXTURE_2D); glDisable (GL_LIGHTING); glColor4f(1,0,0,hit/2.); glBegin (GL_QUADS); glVertex3f(-1,-1,-1); glVertex3f(+1,-1,-1); glVertex3f(+1,+1,-1); glVertex3f(-1,+1,-1); glEnd(); } ship_model (render, &game->player); render_minimap (render, game); render_hud (render, game); } display_text_box (&render->display, &render->msg_id, render->font, render_message_buf, .5,.5,1,.25, 1,1,1,1); display_end_frame(); }