0

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

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

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

4

1 回答 1

1

这通常是由于 RGBA 交换链的图形驱动程序错误。您可以尝试更新驱动程序(运行 Windows 更新)。但是为了提高兼容性,您可以将交换链表面格式更改为 BGRA(特别是B8G8R8A8_UNORM)。只要您只是进行正常渲染(而不是直接对后台缓冲区执行 UpdateSubresource 之类的花哨的操作),您应该能够将其他所有内容保持原样并且它会正确渲染。

于 2014-02-22T00:16:03.710 回答