How do I clear a Direct2D render target to fully transparent

前端 未结 3 1291
梦毁少年i
梦毁少年i 2020-12-11 05:06

I\'m trying to draw semi-transparent rectangles on an invisible HWND. However, clearing the window with ID2D1HwndRenderTarget::Clear just makes the entire w

3条回答
  •  我在风中等你
    2020-12-11 05:48

    When creating your RenderTarget, you'll have to tell D2D that you want to use alpha (in premultiplied mode) in the pixel format:

      HRESULT hr = mD2DFactory->CreateHwndRenderTarget(
        D2D1::RenderTargetProperties( D2D1_RENDER_TARGET_TYPE_DEFAULT, D2D1::PixelFormat( DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED ) ),
        D2D1::HwndRenderTargetProperties( mWindow, size ),
        &mRenderTarget );
    

    After this, calling Clear() with an alpha value of zero works just fine.

提交回复
热议问题