Сохранить вывод ID2D1Effect в ID2D1Bitmap / Image, чтобы нарисовать его позже?

я хочу преобразовать выходное изображение ID2D1Effect в ID2D1Bitmap, чтобы я мог нарисовать его позже, не применяя все эффекты снова и снова …

Моей первой попыткой было сохранить изображение ID2D1Effect :: GetOutput, но это изображение изменится, если я использую эффект с другим источником изображения …

Моя следующая попытка состояла в том, чтобы создать растровое изображение (ID2D1DeviceContext :: CreateBitmap) с установленным флагом D2D1_BITMAP_OPTIONS_TARGET и нарисовать выходные эффекты для этого растрового изображения, но это тоже не работает …

Эффект рисования для данного Bitmap1 ** (dest):

ComPtr<ID2D1Image> swapChainImageBuffer;
this->pDeviceContext->CreateBitmap(D2D1::SizeU(120, 50), nullptr, 0, D2D1::BitmapProperties1(D2D1_BITMAP_OPTIONS_TARGET), dest);
this->pDeviceContext->GetTarget(swapChainImageBuffer.GetAddressOf());
this->pDeviceContext->SetTarget(*dest);
this->pDeviceContext->BeginDraw();
this->pDeviceContext->Clear(D2D1::ColorF(RGB(0, 0, 0), 1.f));
this->pDeviceContext->DrawImage(this->pCompositeEffect.Get(), D2D1::Point2F(20, 10));
this->pDeviceContext->EndDraw();
this->pDeviceContext->SetTarget(swapChainImageBuffer.Get());
swapChainImageBuffer = nullptr;

Нарисуйте растровое изображение позже: (превью)

this->pD2DeviceContext->DrawBitmap(preview.Get(), D2D1::RectF(x, y, x+width, y + height));

(Тот же DeviceContext — ни одна функция, которая возвращает HRESULT, не возвращает код ошибки)

Что я делаю неправильно?

Как я должен это сделать?

1

Решение

просто забыл указать PixelFormat в CreateBitmap.

D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED)

работает сейчас.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]