Как определить, на каком экране находится гарнитура OSVR?

У меня есть приложение WPF+SharpDX для Windows, которое отображается в OSVR HDK через полноэкранное окно на экране, который является HDK. Эта настройка работает хорошо, но она требует от пользователей указывать, на каком экране находится HDK.

Я хотел бы, чтобы это автоматически определялось, но я не видел ничего в API, на котором экран является гарнитурой.

В настоящее время я отрисовываю в окне:

var bounds = dxgiDevice.Adapter.Outputs[_selectedOutput].Description.DesktopBounds;
form.DesktopBounds = new System.Drawing.Rectangle(
    bounds.X, bounds.Y, bounds.Width, bounds.Height);

А также _selectedOutputэто то, что я ищу.

В настоящее время я не поддерживаю прямой режим, и я использую Managed-OSVR. Приложение будет работать на Windows 8/8.1/10.

1 ответ

Решение

Прошло много времени с тех пор, как я что-то кодировал для OSVR, но вот из того, что я помню: если вы работаете в расширенном режиме, OSVR рассматривается как обычный дисплей. Вы можете изменить его, как любой другой экран. Расположение вывода может быть настроено в файле конфигурации OSVR. Я использовал следующее (Java), чтобы получить положение и размер, чтобы настроить мое окно:

osvrContext.getRenderManagerConfig().getXPosition()
osvrContext.getRenderManagerConfig().getYPosition()
osvrContext.getDisplayParameters().getResolution(0).getWidth()
osvrContext.getDisplayParameters().getResolution(0).getHeight()

Чтобы уточнить: я не знаю, можете ли вы получить идентификатор дисплея в расширенном режиме. Из того, что я знаю, это определяется только как позиция и размер на рабочем столе. Я надеюсь, что это поможет вам, в некоторой степени.

Другие вопросы по тегам