С одним монитором моя программа работает как в оконном, так и в полноэкранном режиме (с любым разрешением, выбранным из EnumAdapterModes), но когда я подключаю второй монитор (с тем же кодом), я могу создать полноэкранное устройство с любым разрешением из EnumAdapterModes, но только в собственном разрешении (1600 x 900) он отображает сцену, в противном случае экран просто черный среди других проблем, перечисленных ниже.
Что я обнаружил до сих пор:
Кажется, что проблема связана с резервным буфером, созданным во время выполнения Direct3D9, но единственное решение, которое я могу придумать, — это включить многоголовочный режим на устройствах с несколькими мониторами, есть идеи?
Вопрос, который, кажется, имеет ту же проблему, но не имеет решения: Как отобразить полноэкранный кадр с разрешением, отличным от моего дисплея?
Наконец, выяснилось, похоже, это ошибка драйвера в Windows Vista и более поздних версиях, и использование Direct3D9Ex устранило проблему.
Я не хотел использовать Direct3D9Ex, потому что он был представлен только в Windows Vista, и я хотел поддерживать Windows XP как минимум, но у MSDN есть некоторый пример кода о том, как поддерживать оба, так что все хорошо.
Других решений пока нет …