Узнайте, какой дисплей принадлежит какому адаптеру? - PullRequest
1 голос
/ 24 февраля 2011

Я работаю над приложениями SlimDX, которые работают для нескольких дисплеев. Приложения будут занимать выбранный экран, и его выбор вводится через командную строку, как int. Затем я использую System.Windows.Forms.Screen.AllScreens[selection], чтобы узнать о привязке, и отображаю мои приложения "на весь экран" на этом дисплее.

Теперь, чтобы оптимизировать производительность, мне нужно выбрать адаптер GPU для инициализации устройства Direct3D. Как узнать, какой адаптер GPU питает выбранный дисплей?

Поскольку к каждому адаптеру графического процессора может быть подключен один или два дисплея, я не могу использовать номер дисплея.

Я использую Direct3D10. Я не против решения в Direct3D9.

В худшем случае пользователь может выбрать дисплей и адаптер с помощью командной строки, но я предпочитаю метод «дурака».

Спасибо

1 Ответ

2 голосов
/ 02 марта 2011

D3D10 и D3D11 используют DXGI для управления такими деталями.Созданный вами интерфейс Factory позволяет получить список адаптеров, установленных в системе.Каждый адаптер может иметь один или несколько выходов, которые вы можете перечислить из интерфейса адаптера.

Это даст вам список интерфейсов вывода, у которых есть свойство Description, которое содержит, помимо прочего, прямоугольник границ вывода, а также дескриптор IntPtr для монитора, на котором он работает.

Я не думаю, что класс экрана Winforms выставляет базовый собственный указатель, поэтому мы предоставляем класс SlimDX.Windows.DisplayMonitor, который будет заменять класс Screen.Вы можете использовать это, чтобы определить конкретные детали дисплея и выбрать подходящий адаптер для ваших нужд.

...