Как запросить истинную глубину отображения в Windows 10?

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

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

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

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

Я также был бы заинтересован в разрешении активного разрешения и разрешении рабочего стола и как их получить.

1

Всего 2 ответа


Структура 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 << ----------------------------------
  • Цветовое пространство: DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709
  • Первичные вещества, White Point: 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

введите описание изображения здесь


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


Есть идеи?

10000