Мне было поручено создать в режиме реального времени полноэкранную демо-версию для 5x2 массива 60-дюймовых светодиодных телевизоров или, другими словами, 20-мегапиксельного дисплея.
У нас есть машина, которая может работать с одним рабочим столом Win7, распределенным по дисплеям в полном разрешении, и несколько довольно приличных видеокарт.
Мой вопрос: кроме нелепого объема работы, которую будут выполнять мои пиксельные шейдеры, есть ли какие-то другие ограничения DX10. *, Которые вступят в действие здесь, которых не будет в окне просмотра с более разумным размером? У меня не будет доступа к оборудованию до следующей недели, но я бы хотел, чтобы к тому времени было написано что-то, что я мог бы использовать для тестирования системы.
Обновить
В то время как мне удалось заставить это работать на одной машине с кучей карт AMD EyeFinity (6 выходных) - для обеспечения бесперебойной работы, самым простым способом оказалось создание окна DX для каждого дисплея с отображением диапазона окна. Это вызвало некоторые проблемы с производительностью - я также добился того, чтобы это работало достаточно хорошо, распределив задачу по группе машин, каждая из которых управляет двумя дисплеями.
Это было удивительно легко. Для моего тестового приложения XNA я добавил GameComponent, который фиксирует некоторое игровое состояние (положение / ориентация камеры и т. Д.) И UDP-спамит его через локальную подсеть на кадр.
Этот компонент имеет Mode
переключатель (отправить или получить). Если он в Receive
режиме, он перехватывает UDP-дейтаграммы и обновляет состояние игры информацией от отправителя. Send
mode просто отправляет пакеты состояния и через сервис / демон заставляет узлы запускать или останавливать клиентское приложение. Любой клиент может выступать в роли «мастера», и переключение клиента в Send
режим запрашивает все другие узлы для переключения Receive
. Довольно интересно посмотреть, что происходит, когда люди борются за контроль.
Еще одно полезное преимущество: я создал консольное приложение, которое обрабатывает серию определений состояний ключевых кадров - местоположение, время и т. Д. - интерполирует по мере необходимости и отправляет их с использованием того же кода, который используется в игровом движке. Это позволяет мне легко записывать движения, отправлять преобразования из веб-браузера и т. Д.
В целом, для поддержания синхронизации нескольких копий приложения потребовалось около 50 строк кода. Некоторая дополнительная сложность возникла из-за настройки положения камеры для каждой машины и исправления некоторых неудобств перспективы / проекции, но большая часть этого сводилась к файлу конфигурации для каждого узла.