Мені було доручено створити демонстрацію "повного екрану" в режимі реального часу для роботи на 5x2 масиві 60+-дюймових світлодіодних телевізорів: або, іншими словами, 20-мегапіксельним дисплеєм.
У нас створена машина, яка може запускати один робочий стіл Win7, розповсюджений на дисплеї з повною роздільною здатністю, і кілька досить пристойних відеокарт.
Моє запитання: окрім смішного обсягу роботи, який збираються робити мої піксельні шейдери, чи існують якісь інші обмеження DX10. У мене не буде доступу до обладнання до наступного тижня, але я хотів би, щоб до цього часу було написано щось, що я можу використовувати для порівняння системи.
Оновлення
Хоча Imanaged для того, щоб це працювало на одній машині з купою карт AMD EyeFinity (6 вихідних) - щоб все працювало безперебійно, "найпростішим" способом виявилося створення DX-вікна на дисплей, як відображення діапазону вікон викликав деякі проблеми з продуктивністю - я також змусив його працювати досить добре, розподіливши завдання по групі машин, кожна з яких працює на двох дисплеях.
Це було напрочуд легко. Для мого тестового додатка XNA я додав GameComponent, який фіксує певний ігровий стан (положення / орієнтація камери тощо) та UDP-передає його по локальній підмережі за кадром.
Цей компонент має Mode
комутатор (надсилати або отримувати). Якщо він перебуває в Receive
режимі, він збирає дейтаграми UDP та оновлює стан гри інформацією від відправника. Send
режим просто надсилає пакети стану і через службу / демон демонструє запуск або зупинку вузлів клієнтської програми. Будь-який клієнт може діяти як "головний", а перемикання клієнта в Send
режим вимагає переключення всіх інших вузлів Receive
. Дуже цікаво бачити, що відбувається, коли люди борються за контроль.
Ще одна акуратна перевага: я створив консольний додаток, який обробляє низку визначень стану ключових кадрів - місцеположення, час і т. Д. - інтерполює за потребою та надсилає їх, використовуючи той самий код, який використовується в ігровому двигуні. Це дозволяє мені легко рухатись сценаріями, надсилати перетворення з веб-браузера тощо.
Загалом знадобилося близько 50 рядків коду, щоб синхронізувати кілька копій програми. Деяка додаткова складність полягала в тому, що не встановлюється положення камери для кожної машини та виправляється певна роздратованість / перспектива проекції, але більшість з них зводиться до файлу конфігурації на вузол.