2014-02-21 20 views
0

首先经过4小时的调试后,我的代码没有问题。但我很好奇为什么我有我的问题。d3d11 alt-tab在全屏模式下给出了奇怪的结果

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

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

回答

1

这通常是由于RGBA交换链的图形驱动程序错误。您可以尝试更新您的驱动程序(运行Windows Update)。但为了提高兼容性,您可以将交换链表面格式更改为BGRA(具体而言,B8G8R8A8_UNORM)。只要你只是在进行正常的渲染(而不是像UpdateSubresource那样做任何奇妙的事情直接到后台缓冲区),你应该可以保持原样,并且它会正确渲染。