示例#1
0
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();
}
示例#2
0
文件: render.c 项目: xyphor/cave9
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();
}