在 WM_SIZE 之后调整渲染目标 Direct2D 的大小

2023-12-11

快速问一下大家...我目前正在使用 Directx3D 和 2D,我想知道在调整 Windows 大小时是否必须重新创建渲染目标,或者 Direct2D 会自动检测到这一点,因为它绑定到 DXGISurface(交换链)当我创建它时。

这是我用来将渲染目标绑定在一起的代码:

ComPtr<IDXGISurface1> dxgibackBuffer;
hr = m_pDxSwapchain->GetBuffer(0, IID_PPV_ARGS(&dxgibackBuffer));

D2D1_BITMAP_PROPERTIES1 bitmapProperties = D2D1::BitmapProperties1(
    D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW,
    D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE),
    96.0f,
    96.0f);
hr = m_pD2DContext->CreateBitmapFromDxgiSurface(dxgibackBuffer.Get(), &bitmapProperties, &m_pD2DTargetBitmap);

// last step
m_pD2DContext->SetTarget(m_pD2DTargetBitmap.Get());

See 交换链的维护和喂养 and 处理窗口大小调整

引用1: 当然,应用程序的最佳途径是响应WM_SIZE,并致电IDXGISwapChain::ResizeBuffers,传递消息参数中包含的大小。

引用2: 在您致电之前ResizeBuffers,您必须释放对交换链缓冲区的所有未完成引用。通常保存对交换链缓冲区的引用的对象是渲染目标视图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WM_SIZE 之后调整渲染目标 Direct2D 的大小 的相关文章

  • panda的多索引有什么好处?

    所以我了解到我可以使用 DataFrame groupby 而无需使用 MultiIndex 来进行子采样 横截面 另一方面 当我在 DataFrame 上有 MultiIndex 时 我仍然需要使用 DataFrame groupby 进
  • 在 vue.js 中安装 vuetify 后,新项目无法编译

    我在 vue js 中遇到问题 我使用 webstorm 创建了一个新项目 它运行完全没有问题 我可以看到 vue 徽标 在下一步中 我想安装 vuetify 但出现如下错误 编译失败 src plugins vuetify js 找不到模
  • Java:为什么需要初始化原始局部变量?

    public class Foo public static void main String args float f System out println f print 语句会导致以下编译时错误 局部变量 f 可能尚未初始化 如果 J

随机推荐