Полноэкранное устройство Direct3D9 отображается только в собственном разрешении, когда подключен второй монитор

0

С одним монитором моя программа работает как в оконном, так и в полноэкранном режиме (с использованием любого разрешения, выбранного из EnumAdapterModes), но когда я подключаю свой второй монитор (работает с тем же кодом), я могу создать полноэкранное устройство с любым разрешением от EnumAdapterModes, но только в собственном разрешении (1600 x 900) отображает сцену, в противном случае экран просто черный среди других проблем, перечисленных ниже.

То, что я обнаружил до сих пор:

  • Эта проблема не возникает в оконном или многоголовом режиме
  • Я все равно могу сделать текстуру (мне пришлось переключать режимы, чтобы отобразить ее)
  • Все вызовы функций возвращают коды успеха (включая TestCooperativeLevel)
  • Если я попытаюсь сделать обратный буфер с помощью Clear или DrawPrimitive или вызвать Present (который все еще оставляет черный экран), чем вызовы GetRenderTargetData не удаются, и попытка заблокировать текстуру тома вернет различные срезы среза на вспомогательных уровнях
  • В коммерческих играх, в которых используется Direct3D9 (Portal), нет проблем с переключением между разрешениями с подключенным вторым монитором, поэтому должно быть решение

Проблема, похоже, связана с обратным буфером, созданным временем запуска Direct3D9, но единственным решением, которое я могу придумать, является принудительное использование режима multihead на устройствах с несколькими мониторами, любые идеи?

Вопрос, который, похоже, имеет ту же проблему, но не имеет решения: как сделать полноэкранный кадр с другим разрешением, чем мой дисплей?

Теги:
visual-c++
multiple-monitors
direct3d

1 ответ

0
Лучший ответ

Наконец, выяснилось, что это ошибка драйвера в Windows Vista и позже, и с помощью Direct3D9Ex исправлена проблема.

Я не хотел использовать Direct3D9Ex, потому что он был введен только в Windows Vista, и я хотел как минимум поддерживать Windows XP, но MSDN имеет примерный пример того, как поддерживать оба, так что все это хорошо.

  • 0
    Я не буду беспокоиться о том, что XP выйдет из-под поддержки в апреле 2014 года. Кроме того, большинство игроков работают на Windows 7 и имеют соответствующее оборудование.
  • 0
    Я в основном консольный геймер, поэтому у меня все еще есть XP (мой рабочий стол), и я знаю нескольких людей, у которых он также есть, но я начинаю разработку игр для ПК, и сейчас я в основном использую свой ноутбук для разработки (Windows 7). ), но мой ноутбук не совсем игровой автомат.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню