Сохраненное растровое изображение allegro отличается от отображаемого на дисплее - PullRequest
0 голосов
/ 30 января 2020

Я меняю цвета некоторых пикселей в растровом изображении, но бывает две странные вещи:

  1. Использование al_lock_bitmap и al_unlock_bitmap: растровое изображение, отображаемое на экране, не изменяется, сохраненное растровое изображение сохраняется с внесенными изменениями.
  2. Без al_lock_bitmap и al_unlock_bitmap: работает в инверсном режиме, растровое изображение, отображаемое на экране, выполнено, но сохраненное растровое изображение не сохранило эти изменения.

См. Ниже код, который я использую:

al_lock_bitmap(grid, al_get_bitmap_format(grid), ALLEGRO_LOCK_READWRITE);
al_set_target_bitmap(grid);

for (int y = 300; y < 350; ++y) {
    for (int x = 400; x < 450; ++x) {
        al_put_pixel(x, y, al_map_rgb(255, 0, 0));
        auto color = al_get_pixel(grid, x, y);

        unsigned char r,g,b;
        al_unmap_rgb(color, &r, &g, &b);
        bool isColorRed = (r == 255 && g == 0 && b == 0);
    }
}

al_unlock_bitmap(grid);

bool saved = al_save_bitmap("/path/to/my/image.bmp", grid);

if(saved) {
    cout << "saved" << endl;
} else {
    cout << "not saved" << endl;
}

al_flip_display();

Кто-нибудь знает, что происходит, или как я могу решить эту проблему?

...