Win32: Как определить, включен ли DirectDraw?

При использовании CachedBitmaps в GDIPlus существует графическое повреждение, если видео Windows "Аппаратное ускорение" понижено слишком много - таким образом, что DirectDraw отключен:

enter image description here

Существует шесть уровней аппаратного ускорения:

  • Отключите все ускорения
  • Отключите все но основные ускорения. (Значение по умолчанию на машинах сервера)
  • Отключите весь DirectDraw и ускорения Direct3D, а также весь курсор и усовершенствованные ускорения
  • Отключите весь курсор и усовершенствованные ускорения рисунка
  • Отключите курсор и побитово отобразите ускорения
  • Все ускорения включены (Значение по умолчанию на настольных машинах)

Если DirectDraw отключен, то использование DrawCachedBitmap в GDI + приведет к графическому повреждению. Для меня достаточно легко использовать медленнее DrawImage() API, если DirectDraw не включен - но я должен смочь обнаружить тот DirectDraw, отключен.

Как я могу программно проверить, включен ли DirectDraw?


Вопрос: Как делает dxdiag, делают это:

alt text

См. также

Опция KB191660 - DirectDraw или Direct3D недоступна (архив)

5
задан Ian Boyd 21 February 2019 в 01:18
поделиться