Я хочу получить полностью прозрачное и прозрачное растровое изображение в ID2D1BitmapRenderTarget
, но вместо очистки метод Clear()
альфа-смешивает очищающий цвет с существующим растровым содержимым. Т.е. если очищаемый цвет равен (0,0,0,0), то ничего не меняется, если цвет частично непрозрачный, то существующий контент частично затемняется, но никогда не удаляется полностью.
Я создаю ID2D1BitmapRenderTarget
с использованием ID2D1RenderTarget::CreateCompatibleRenderTarget()
из текстуры Direct3D, и я убедился, что формат пикселя растрового изображения DXGI_FORMAT_R8G8B8A8_UNORM
, а альфа-режим D2D1_ALPHA_MODE_PREMULTIPLIED
, поэтому очистка с прозрачным цветом должна действительно работает, но это не так.
Вот мой код:
D2D1_SIZE_U bitmapPixSize = {...};
D2D1_PIXEL_FORMAT bitmapPixFormat = {};
// Use the same pixel format and alpha mode as the source texture render target
bitmapPixFormat.alphaMode = D2D1_ALPHA_MODE_UNKNOWN;
bitmapPixFormat.format = DXGI_FORMAT_UNKNOWN;
textureRenderTarget->CreateCompatibleRenderTarget(
nullptr,
&bitmapPixSize,
&bitmapPixFormat,
D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE,
&bitmapRenderTarget);
// Doesn't work
bitmapRenderTarget->Clear(nullptr);
D2D1_COLOR_F color = { .r = 0, .g = 0, .b = 0, .a = 0 };
// Doesn't work either
bitmapRenderTarget->Clear(&color);`
Пожалуйста, помогите !!!