я захватываемых this multi window тестовый код, изменил его использовать D3DXCreateTeapot
вместо D3DXLoadMeshFromX
(я не мог найти файл teapot.x), переместил EndScene
вызов ниже DrawText
вызова и установить NUM_WINDOWS
1. С эти незначительные изменения, тест работает и создает два окна, каждый со своим чайником.аппаратное ускорение с несколькими мониторами
Я построил тест и развернул его на машине с графическим процессором Intel HD Graphics с двумя головками, каждый из которых прикреплен к монитору. Затем я переместил одно окно на каждый монитор и увеличил оба окна до примерно 80% каждого пространства монитора.
С помощью этой настройки, которая очень близка к тому, что нужно моему приложению, окно на вторичном мониторе всегда идет слишком медленно. Если я обмениваю окна, это то же самое: во втором мониторе начинает сканирование и замедляется вся система.
Я googled вокруг, и некоторые источники (хотя и датированы) утверждают, что только основной монитор может использовать аппаратное ускорение, если не в полноэкранном режиме. Я не могу использовать полноэкранный режим, потому что рендеринг direct3d9 в моем приложении выполняется внутри пользовательского элемента управления, встроенного в графический интерфейс Winforms.
Неужели невозможно получить аппаратное ускорение для обоих мониторов в оконном режиме? Унаследованная версия нашего приложения использует MFC + DirectDraw и позволяет выполнять достаточно быстро, но это устаревшие технологии, и мы перестали возвращаться туда.
О пункте 1, независимо от того, какие параметры я устанавливаю, вторичный монитор всегда медленный. Как будто он не может включить аппаратное ускорение вообще. Точка 3 не является опцией из-за ограничений по времени (код Direct3d9 слишком велик и не изолирован должным образом для порта Dx11, насколько я бы хотел это сделать). Попробуем попробовать 2. В то же время +1 –