使用单个显示器,我的程序可以在窗口和全屏模式下工作(使用从EnumAdapterModes中选择的任何分辨率),但是当我插入第二台显示器(运行相同的代码)时,我可以创建任何分辨率的全屏设备来自EnumAdapterModes,但仅在原始分辨率(1600 x 900)下显示场景,否则屏幕在下面列出的其他问题中只是黑色。
到目前为止我发现了什么:
问题似乎与Direct3D9运行时创建的后台缓冲区有关,但我能想到的唯一解决方案是在具有多个监视器的设备上强制执行多头模式,有什么想法吗?
似乎有同样问题但缺乏解决方案的问题:How do I render a fullscreen frame with a different resolution than my display?
答案 0 :(得分:0)
最后想通了,似乎是Windows Vista中的驱动程序错误以及后来使用Direct3D9Ex解决了这个问题。
我不想使用Direct3D9Ex,因为它仅在Windows Vista上引入,我想支持Windows XP,但MSDN有一些示例代码,说明如何支持这两者,所以这一切都很好。