Как запросить истинную битовую глубину отображения под Windows 10? - PullRequest
0 голосов
/ 16 ноября 2018

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

С DXGI можно перечислять все режимы на выходе и легко определять их битовую глубину, однако нет вызова для получения текущего режима.

Все текущие вызовы win32, которые возвращают bitsPerPel, всегда указывают 32bpp.

Кто-нибудь знает, какой вызов может получить эти данные?Я могу обнаружить это с помощью NvAPI и ADL, однако у меня нет решения для машин на базе Intel.

Мне было бы дополнительно интересно узнать разрешение активного сигнала в сравнении с полем разрешения рабочего стола и узнать, как их получить.

1

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

DXGI_OUTPUT_DESC1 структура дает вам следующее:

BitsPerColor

Тип: UINT

Количество бит на канал цвета для активного формата проводникадисплей подключен к этому выходу.

Структура DXGI_OUTPUT_DESC1 инициализируется методом IDXGIOutput6::GetDesc1.

Просто примеркакие данные вы получаете:

-

Адаптер: Radeon RX 570 Series

Вывод: \. \ DISPLAY4
  • Координаты рабочего стола: (0, 0) - (3840, 2160);3840 x 2160
  • Прикреплено к рабочему столу: 1
  • Вращение: DXGI_MODE_ROTATION_IDENTITY
  • Монитор: 0x000100AF
  • Физические мониторы: LG ULTRA HD (DisplayPort) (0x00000000)
  • бит на цвет: 10 << ---------------------------------- </li>
  • Цветовое пространство: DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709
  • Первичные цвета, точка белого: R {0,652, 0,335}, G {0,305, 0,637}, B {0,148, 0,062};{0.313, 0.329}
  • Яркость: Мин. 0.500, Макс. 270.000, Макс. Полный кадр 270.000
  • Поддержка аппаратного состава: DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN |DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED

enter image description here

0 голосов
/ 16 ноября 2018

По моему мнению, битовая глубина в расширенных настройках дисплея на самом деле означает битовую глубину для каждого цвета , это всего лишь путаница с именами. Стандартный 32-битный цвет - 8 бит для красного, зеленого и синего, остальные 8 бит либо используются для прозрачности, либо просто заполнены нулями. Вот почему вы всегда получаете 32 бита за каждый пиксель.

...