some other performance tweaks

This commit is contained in:
Sebastian Krzyszkowiak 2012-05-04 02:13:46 +02:00
parent bbf0198669
commit 78475c456d
2 changed files with 15 additions and 5 deletions

View file

@ -218,8 +218,8 @@ void Level_Draw(struct Game *game) {
if (game->level.derpy_y < 0) game->level.derpy_y=0; if (game->level.derpy_y < 0) game->level.derpy_y=0;
else if (game->level.derpy_y > 0.75) game->level.derpy_y=0.75; else if (game->level.derpy_y > 0.75) game->level.derpy_y=0.75;
} }
al_hold_bitmap_drawing(true);
al_clear_to_color(al_map_rgb(0,0,0));
al_draw_bitmap(game->level.clouds, (-game->level.cl_pos)*al_get_bitmap_width(game->level.clouds), 0, 0); al_draw_bitmap(game->level.clouds, (-game->level.cl_pos)*al_get_bitmap_width(game->level.clouds), 0, 0);
al_draw_bitmap(game->level.clouds, (1+(-game->level.cl_pos))*al_get_bitmap_width(game->level.clouds), 0, 0); al_draw_bitmap(game->level.clouds, (1+(-game->level.cl_pos))*al_get_bitmap_width(game->level.clouds), 0, 0);
al_draw_bitmap(game->level.background, (-game->level.bg_pos)*al_get_bitmap_width(game->level.background), 0, 0); al_draw_bitmap(game->level.background, (-game->level.bg_pos)*al_get_bitmap_width(game->level.background), 0, 0);
@ -261,7 +261,8 @@ void Level_Draw(struct Game *game) {
free(t); free(t);
} }
} }
al_hold_bitmap_drawing(false);
al_set_target_bitmap(game->level.derpy); al_set_target_bitmap(game->level.derpy);
al_clear_to_color(al_map_rgba(0,0,0,0)); al_clear_to_color(al_map_rgba(0,0,0,0));
al_draw_bitmap_region(*(game->level.derpy_sheet),al_get_bitmap_width(game->level.derpy)*(game->level.sheet_pos%game->level.sheet_cols),al_get_bitmap_height(game->level.derpy)*(game->level.sheet_pos/game->level.sheet_cols),al_get_bitmap_width(game->level.derpy), al_get_bitmap_height(game->level.derpy),0,0,0); al_draw_bitmap_region(*(game->level.derpy_sheet),al_get_bitmap_width(game->level.derpy)*(game->level.sheet_pos%game->level.sheet_cols),al_get_bitmap_height(game->level.derpy)*(game->level.sheet_pos/game->level.sheet_cols),al_get_bitmap_width(game->level.derpy), al_get_bitmap_height(game->level.derpy),0,0,0);
@ -274,7 +275,8 @@ void Level_Draw(struct Game *game) {
if (game->level.sheet_pos>=game->level.sheet_cols*game->level.sheet_rows) game->level.sheet_pos=0; if (game->level.sheet_pos>=game->level.sheet_cols*game->level.sheet_rows) game->level.sheet_pos=0;
} }
al_set_target_bitmap(al_get_backbuffer(game->display)); al_set_target_bitmap(al_get_backbuffer(game->display));
al_hold_bitmap_drawing(true);
al_draw_tinted_bitmap(game->level.derpy, al_map_rgba_f(255,255-colision*255,255-colision*255,1), derpyx, derpyy, 0); al_draw_tinted_bitmap(game->level.derpy, al_map_rgba_f(255,255-colision*255,255-colision*255,1), derpyx, derpyy, 0);
al_draw_bitmap(game->level.foreground, (-game->level.fg_pos)*al_get_bitmap_width(game->level.foreground), 0 ,0); al_draw_bitmap(game->level.foreground, (-game->level.fg_pos)*al_get_bitmap_width(game->level.foreground), 0 ,0);
@ -291,6 +293,8 @@ void Level_Draw(struct Game *game) {
} }
game->level.cl_pos += tps(game, 60*0.00005); game->level.cl_pos += tps(game, 60*0.00005);
if (game->level.cl_pos >= 1) game->level.cl_pos=game->level.cl_pos-1; if (game->level.cl_pos >= 1) game->level.cl_pos=game->level.cl_pos-1;
al_hold_bitmap_drawing(false);
TM_Process(); TM_Process();
} }
} }
@ -554,7 +558,7 @@ void Level_PreloadBitmaps(struct Game *game) {
game->level.background = LoadScaledBitmap("levels/1/background.png", al_get_display_height(game->display)*4.73307291666666666667, al_get_display_height(game->display)); game->level.background = LoadScaledBitmap("levels/1/background.png", al_get_display_height(game->display)*4.73307291666666666667, al_get_display_height(game->display));
game->level.stage = LoadScaledBitmap("levels/1/stage.png", al_get_display_height(game->display)*4.73307291666666666667, al_get_display_height(game->display)); game->level.stage = LoadScaledBitmap("levels/1/stage.png", al_get_display_height(game->display)*4.73307291666666666667, al_get_display_height(game->display));
game->level.obst_bmps.pie = LoadScaledBitmap("menu/pie.png", al_get_display_width(game->display)*0.1, al_get_display_height(game->display)*0.1); game->level.obst_bmps.pie = LoadScaledBitmap("menu/pie.png", al_get_display_width(game->display)*0.1, al_get_display_height(game->display)*0.1);
game->level.welcome = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); game->level.welcome = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)/2);
al_set_target_bitmap(game->level.welcome); al_set_target_bitmap(game->level.welcome);
al_clear_to_color(al_map_rgba(0,0,0,0)); al_clear_to_color(al_map_rgba(0,0,0,0));
al_draw_text_with_shadow(game->menu.font_title, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.5, al_get_display_height(game->display)*0.1, ALLEGRO_ALIGN_CENTRE, "Level 1"); al_draw_text_with_shadow(game->menu.font_title, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.5, al_get_display_height(game->display)*0.1, ALLEGRO_ALIGN_CENTRE, "Level 1");

View file

@ -348,7 +348,7 @@ int main(int argc, char **argv){
if (game.fullscreen) al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW); if (game.fullscreen) al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW);
else al_set_new_display_flags(ALLEGRO_WINDOWED); else al_set_new_display_flags(ALLEGRO_WINDOWED);
al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST); al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST);
/*al_set_new_display_option(ALLEGRO_OPENGL, 1, ALLEGRO_SUGGEST);*/ al_set_new_display_option(ALLEGRO_OPENGL, 1, ALLEGRO_SUGGEST);
game.display = al_create_display(game.width, game.height); game.display = al_create_display(game.width, game.height);
if(!game.display) { if(!game.display) {
fprintf(stderr, "failed to create display!\n"); fprintf(stderr, "failed to create display!\n");
@ -389,6 +389,12 @@ int main(int argc, char **argv){
game.showconsole = game.debug; game.showconsole = game.debug;
ALLEGRO_DISPLAY_MODE mode;
al_get_display_mode(0, &mode);
if (mode.refresh_rate < game.fps) {
PrintConsole(&game, "Refresh rate %d lower than FPS %d, lowering", mode.refresh_rate, game.fps);
game.fps = mode.refresh_rate;
}
al_clear_to_color(al_map_rgb(0,0,0)); al_clear_to_color(al_map_rgb(0,0,0));
al_flip_display(); al_flip_display();