Как определить, на каком экране находится гарнитура 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()
Чтобы уточнить: я не знаю, можете ли вы получить идентификатор дисплея в расширенном режиме. Из того, что я знаю, это определяется только как позиция и размер на рабочем столе. Я надеюсь, что это поможет вам, в некоторой степени.