DirectX 9. Работа с несколькими мониторами. Рисует только на primary-монитор

Тема в разделе "WASM.DirectX", создана пользователем Andrey333, 12 авг 2020.

  1. Andrey333

    Andrey333 Member

    Публикаций:
    0
    Регистрация:
    30 янв 2020
    Сообщения:
    35
    Здравствуйте! Мне тут, для тестов, нужно запилить простой пример прорисовки графики на несколько мониторов. Но в directx разбираюсь плохо, прошу помощи.

    Опираясь на текст из msdn (Working with Multiple Monitor Systems) пытаюсь реализовать следующим образом. Для каждого адаптера создаю device. У всех device-ов общее focus-окно (то что передается в параметре IDirect3D9::CreateDevice), но device-окно у каждого свое (то что в D3DPRESENT_PARAMETERS). После создания последнего device-a сбрасываю, с помощью IDirect3DDevice9::Reset, первый созданный (тот что для 0-вого адаптера). Далее по таймеру (WM_TIMER) раз в 10 милисекунд заливаю фон и прорисовываю след. строку: "Adapter: %u, hwnd: 0x%p". Строка движущееся. Но результат не тот, что я ожидал. Вместо того, чтобы прорисовываться на каждый монитор, все рисуется на primary-монитор (0-й адаптер), а на остальных мониторах пусто. Т.е. я вижу, на primary-мониторе строку в которой мелькают адаптеры 0-1-2-n и разные хэндлы окон. Получается строки накладываются друг на друга. Причем, что интересно, иногда первые кадры все же успевают прорисовывается на отличных от primary мониторах, но далее идет наложение.

    Тестирую на Windows 10 x64 на виртуалке VirtualBox 6.1.