Mfc 为什么带有SDI/MDI的DX12应用程序在使用DXGI_格式_R16G16B16A16_浮点作为后缓冲区时会出现奇怪的闪烁

Mfc 为什么带有SDI/MDI的DX12应用程序在使用DXGI_格式_R16G16B16A16_浮点作为后缓冲区时会出现奇怪的闪烁,mfc,directx-12,Mfc,Directx 12,从去年开始,我就一直在DirectX12上编程,我经历过DX10和DX11。在我的应用程序DX12中发现了一些奇怪的东西,我无法找到原因或解决方案。我不能显示我的原始代码,但它可以,因为它发生在任何简单的DX12示例中 例如,我们可以直接使用三角形示例(由DirectX12官员提供)。我在MFCSDI应用程序中集成了它,没有修改任何基本的东西,到目前为止,一切都很好。但在我将交换链格式更改为DXGI_格式_R16G16B16A16_FLOAT之后,当其他窗口或应用程序停留/移动在其顶部但没有完全

从去年开始,我就一直在DirectX12上编程,我经历过DX10和DX11。在我的应用程序DX12中发现了一些奇怪的东西,我无法找到原因或解决方案。我不能显示我的原始代码,但它可以,因为它发生在任何简单的DX12示例中

例如,我们可以直接使用三角形示例(由DirectX12官员提供)。我在MFCSDI应用程序中集成了它,没有修改任何基本的东西,到目前为止,一切都很好。但在我将交换链格式更改为DXGI_格式_R16G16B16A16_FLOAT之后,当其他窗口或应用程序停留/移动在其顶部但没有完全覆盖它时,该应用程序会产生闪烁。你可以找到我制作的视频(抱歉的质量)显示闪烁,还有Visual C++ 2015 MFC示例。 我尝试了一些改变背景的方法,但仍然找不到解决方案。。。这是编程级别的问题吗?但在哪个级别,MFC、DirectX12或DXGI?或者这是操作系统或硬件级别的问题

我已经给出了整个项目的vc++,所以我想我可以跳过给出“最小、完整和可验证的示例”这一步。我不显示代码,因为我不知道代码的哪一部分可能是问题的原因,而且我也不确定它是否是编码问题。我想提一提的是,只有当我用DXGI_格式_R16G16B16A16_浮点替换DXGI_格式_R8G8B8A8_UNORM时,问题才会出现。顺便说一下,如果我做同样的“集成到MFC”的事情,DirectX11不会出现闪烁

PS.在VC2015中调试时没有错误或警告


另外,当我将示例(通过使其成为dll)集成到C#Winforms应用程序中时,也会发生同样的情况。

您是否尝试启用了?您是否使用扩展窗口样式创建窗口?@IInspectable哦,是的,当然。在不启用调试层的情况下调试d3d应用程序是没有意义的。我在这里展示的三角形示例非常标准(我想微软的人不会弄错他们的教程代码。)@IInspectable不,我没有使用WS_EX_NoreditionBitmap。事实上,我不知道它是用来做什么的。但是我没有创建任何窗口,我只是使用MFCSDI主窗口(hwnd)来关联/创建交换链。这种窗口样式基本上结束了透支战,没有为本机hwnd分配合成图面。当我到家时,我会给你找一篇文章,解释如何设置它。