Transparent glitches while drawing GIF

Viewed 45

I wrote some solution to draw gifs, using Direct2D GIF sample:

// somewhere in render loop

IWICBitmapFrameDecode* frame = nullptr;
IWICFormatConverter* converter = nullptr;
gifDecoder->GetFrame(current_frame, &frame);

if (frame)
{
    d2dWICFactory->CreateFormatConverter(&converter);

    if (converter)
    {
        ID2D1Bitmap* temp = nullptr;

        converter->Initialize(frame, GUID_WICPixelFormat32bppPBGRA,
            WICBitmapDitherTypeNone, NULL, 0.f, WICBitmapPaletteType::WICBitmapPaletteTypeCustom);

        tar->CreateBitmapFromWicBitmap(converter, NULL, &temp);

        scale->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(1, 1));
        scale->SetInput(0, temp);

        target->DrawImage(scale);

        SafeRelease(&temp);
    }
}
SafeRelease(&frame);
SafeRelease(&converter);

Where gifDecoder is obtained this way:

d2dWICFactory->CreateDecoderFromFilename(pathToGif, NULL, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &gifDecoder);

enter image description here

But in my program almost with all gifs, all frames, except the first one, for some reason have horizontal transparent lines. Obviously, when I view the same gif in browser or in another program there are no that holes.

I tried to change pixel format, pallet type, but that glitches are still there.

What do I do wrong?

0 Answers
Related