DXGI и 2+ полноэкранные дисплеи в Windows 7
Я занимаюсь разработкой программы, которая требует двух полноэкранных дисплеев Direct3D. Согласно документации, я должен создать цепочки обмена в оконном режиме, а затем переключиться в полноэкранный режим. Хотя это отлично работает в Windows 8 (в настоящее время я просто использую Alt-Enter для переключения), в Windows 7 это не работает. В Windows 7 возникает проблема, аналогичная этой проблеме, когда экран, который был недавно переключение в полноэкранный режим работает нормально, но другой экран, который ранее работал нормально в полноэкранном режиме, становится черным (и остается с тем же полноэкранным разрешением), пока я не выведу его из полноэкранного режима.
Вы можете найти мой беспорядок грубого прототипа в этом теге.
По-видимому, в прошлом были и другие ошибки, относящиеся конкретно к Windows 7... Но я, похоже, получаю проблему, которая немного отличается.
Кроме того, я попытался отключить композицию DWM, как предложено в связанном вопросе, но это не помогло решить проблему.
Пожалуйста, дайте мне знать, если есть больше информации, которую я могу предоставить о проблеме... Я предполагаю, что в худшем случае я просто вернусь к DX9, который, очевидно, отлично работает для полноэкранной настройки с несколькими мониторами...
1 ответ
Я думаю, что, возможно, выяснил причину проблемы: это может быть потому, что я создавал несколько ID3D11Device для одного и того же адаптера.
Мой код был слишком сложным для того, что мне было нужно, так как я следовал методам, представленным в этой статье, когда мне действительно не нужно было ничего, кроме одного потока для всех окон и рендеринга. После совместного использования одного и того же ID3D10Device для каждой цели рендеринга (одна цель рендеринга на выход, одна ID3D10Device на адаптер), я успешно получил DXGI с DX10, рендеринг двух полноэкранных дисплеев, как показано в моем грубом подтверждении концепции утечки памяти.
Поскольку я впервые работал с какой-либо из этих технологий, я использовал эту статью, чтобы помочь мне в этом процессе: Отображение разных изображений на монитор DirectX 10