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