Аллегро обновление рисунка

Привет, во-первых, я просто хочу сказать, что я полный нуб в аллегро и почти только начал. Что я хочу сделать, так это сохранить линию на экране в течение секунды, но затем она исчезнет. Прямо сейчас все, что происходит, это то, что линия просто остается на экране.

Вот мой код:

#include <allegro.h>
#include <cstdlib>

BITMAP *buffer;

int main(){

    allegro_init();
    install_mouse();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);
    buffer = create_bitmap( 640, 480);

    while( !key[KEY_ESC]){


     if (key[KEY_SPACE]){

      line( buffer, 30, 450, mouse_x, mouse_y, makecol( 255, 0, 0));

      }

    draw_sprite( screen, buffer, 0, 0);
    release_screen();

    rest(10);

    }

    return 0;

}
END_OF_MAIN();

person Napplesauce    schedule 26.01.2013    source источник
comment
Вы можете изучить функцию release_screen(), потому что я почти уверен, что она не нужна там, где вы ее используете. Функция draw_sprite(), как и все стандартные функции рисования, позаботится о блокировке и освобождении экрана за вас. Если вы не делаете что-то достаточно сложное, вам, скорее всего, никогда не придется вручную отпускать экран.   -  person Alex    schedule 16.02.2013


Ответы (1)


Здесь происходит то, что вы просто многократно рисуете линию в одном и том же месте, никогда не очищая экран. Вы можете очистить экран с помощью:

clear_to_color(buffer,makecol(r,g,b));

Самое простое решение — добавить эту строку, используя предпочтительные значения RGB, в начало цикла.

person Alex    schedule 16.02.2013