全屏上的d3d11 alt-tab给出了奇怪的结果

时间:2014-02-21 21:09:23

标签: windows directx sdl fullscreen direct3d11

首先经过4个小时的调试后,我的代码没有问题。但我很好奇为什么我遇到了问题。

我使用d3d11渲染创建了全屏窗口。当我尝试使用alt-tab窗口而在我的循环中没有Present()时出现问题(我在实现渲染功能之前只是发现了这个问题)。在这种情况下,在最小化窗口后,我的屏幕上的红色和蓝色通道被交换(是的,字面意思)。

我花了很长时间才找到,因为我怀疑我的交换链或窗口本身(sdl)。你可以帮助我找出这个bug的原因 - 出于教育目的吗?

1 个答案:

答案 0 :(得分:1)

这通常是由于RGBA交换链的图形驱动程序错误造成的。您可以尝试更新驱动程序(运行Windows Update)。但是为了提高兼容性,您可以将交换链表面格式更改为BGRA(特别是B8G8R8A8_UNORM)。只要您正在进行正常渲染(并且没有像UpdateSubresource直接向后缓冲区那样做任何事情),您应该能够保留其他所有内容并且它将正确呈现。