Перечисление устройств и режимов отображения для рендеринга OpenGL

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

Я использую EnumDisplayDevices, чтобы получить адаптеры, а затем EnumDisplaySettings для каждого устройства, давая мне bpp, ширину, высоту и частоту обновления. Однако я не уверен, как узнать, какие режимы доступны в полноэкранном режиме (в структуре DEVMODE, похоже, нет флага для этого). Можно ли предположить, что все перечисленные режимы в принципе могут быть созданы в полноэкранном режиме?

В качестве дополнительного вопроса, является ли такой подход к перечислению устройств в целом лучшим способом получения необходимой информации в Windows?

3 ответа

Решение

В OpenGL нет такого различия между оконным и полноэкранным режимами. Если вы хотите, чтобы программа OpenGL работала в полноэкранном режиме, просто установите окно на верхний уровень, без полей, без декораций, оставайтесь сверху и максимально увеличивайте размер.

Выше это на самом деле тупой вопрос. По определению в оконном режиме должны быть текущие настройки дисплея. Все остальные режимы должны быть доступны в полноэкранном режиме (при условии, что ОС поддерживает их, т.е. 640x480 не рекомендуется в Vista/7).

Хммм, совсем не правильно, да и с отношением тоже. У вас есть множество функций, которые можно использовать.

SetPixelFormat, ChoosePixelFormat, ChangeDisplaySettings.

Функции PixelFormat позволят вам перечислить доступные режимы. ChangeDisplaySettings позволяет вам установить любой режим экрана (включая битовую глубину), который хочет ваше приложение. Ищите их в MSDN.

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