Корявое отображение анимации из массива спрайтов

Доброго времени суток.
Надумал я сделать простую игру в стиле «перебей их всех». Первым делом решил поиграться с анимацией. В качестве анимированного объекта взял обычный астероид. Анимация состоит из 36 кадров, получаемых путём поворота на угол 10 градусов по часовой стрелке исходного спрайта. Анимация организуется путём массива спрайтов (SpaceBattle::Graphics::SpriteAnimation).
На этом моменте у меня появляется проблема. Сам по себе поворот спрайта (SpaceBattle::Graphics::Sprite::getRotate) работает без проблем. Но когда я создаю анимацию из 36 таких поворотов получается это:
дада вот это

Из-за чего может такое получаться?

Сам архив с исходниками можно скачать тут.

В коде используется allegro5, но, думаю, что обёртка, в которую я заключил большинство работы с библиотекой, понятна и ошибок в себе не несёт.
Вот, кстати, код, которым я проверял работу SpaceBattle::Graphics::Sprite::getRotate:

#include <allegro5/allegro5.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_native_dialog.h>

#include "display.h"
#include "sprite.h"
#include "asteroid.h"

#include <cstdlib>
#include <ctime>


int main()
{
    std::srand( std::time( NULL ) );


    al_init();

    al_init_image_addon();

    const ALLEGRO_COLOR BLACK = al_map_rgb( 0, 0, 0 );

    SpaceBattle::Graphics::Display display( 400, 300 );

    SpaceBattle::Graphics::Sprite sp("./data/images/asteroid/1.png");


    const double angle = 230;

    sp.getRotate( angle * 3.14 / 180 ).draw( display, 0, 0, SpaceBattle::Graphics::Sprite::NORMAL );
    display.flip();
    al_rest( 3.0 );

    return 0;
}

Тут при любом значении angle всегда выводится чёткое изображение повёрнутого астероида.

Я решил проблему. Почему-то добавление al_clear_to_color в Sprite::getRotate перед al_draw_rotated_bitmap помогло.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.