gpt4 book ai didi

directx-11 - 使用 DirectX 11 后重置窗口

转载 作者:行者123 更新时间:2023-12-03 21:24:42 32 4
gpt4 key购买 nike

我编写了一个应用程序,它可以在 OpenGL、DirectX 9 和 DirectX 11 之间切换以进行渲染,而无需重新启动或重新创建窗口。在 OpenGL 和 DirectX 9 以及 DirectX 11 模式之间切换效果很好,但是,在使用 DirectX 11 之后,其他渲染模式不再起作用。

释放所有 DirectX 11 接口(interface)后,窗口仍然显示最后渲染的帧,甚至在调整窗口大小时正确更新。可以创建 DirectX 9 设备并且 Present 调用成功,但是,我看到的只是 DirectX 11 绘制的最后一帧。

我已经使用 IDXGIDebug::ReportLiveObjects 来确保所有 DirectX 11 接口(interface)都已实际发布。我也试过 IDXGIFactory::MakeWindowAssociation,但没有解决问题。

为什么要重绘最后一帧,谁重绘它?如何摆脱它并恢复窗口的原始行为。

顺便说一句,创建一个新窗口是一种解决方法,但我想为 DirectX 9/11 和 OpenGL 使用相同的窗口。

最佳答案

问题的原因是 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL。 http://msdn.microsoft.com/en-us/library/windows/desktop/hh706346(v=vs.85).aspx

使用翻转模型时,只有运行时传递给 DWM 的翻转模型交换链中的 Direct3D 内容可见。运行时忽略所有其他 bitblt 模型 Direct3D 或 GDI 内容更新。

这就解释了为什么在翻转顺序模式下使用 DirectX 11 后使用 DirectX 9 没有得到任何输出。

关于directx-11 - 使用 DirectX 11 后重置窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647359/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com