Я пытаюсь создать изображения ImageMagick из данные SDL пикселей. Вот как выглядит GIF на данный момент. (Этот GIF намеренно медленнее, чем тот, что ниже.)
http://www.starlon.net/images/combo.gif
Вот как это должно выглядеть. Обратите внимание, что на изображении выше пиксели кажутся наложенными поверх других пикселей.
http://www.starlon.net/images/combo2.gif
Вот где на самом деле создается GIF.
void DrvSDL::WriteGif() {
std::list<Magick::Image> gif;
for(std::list<Magick::Blob>::iterator it = image_.begin(); it != image_.end(); it++) {
Magick::Geometry geo(cols_ * pixels.x, rows_ * pixels.y);
Magick::Image image(*it, geo, 32, "RGB");
gif.push_back(image);
LCDError("image");
}
for_each(gif.begin(), gif.end(), Magick::animationDelayImage(ani_speed_));
Magick::writeImages(gif.begin(), gif.end(), gif_file_);
}
И вот где упакован Blob.
image_.push_back(Magick::Blob(surface_->pixels, rows_ * pixels.y * surface_->pitch));
А вот как я инициализирую поверхность SDL.
surface_ = SDL_SetVideoMode(cols_ * pixels.x, rows_ * pixels.y, 32, SDL_SWSURFACE);