OpenGL
Как мне узнать, используется ли мой 3D-акселератор, или OpenGL работает в режиме программной эмуляции ?
В первую очередь, это заметно по скорости ;-)
С помощью функции DescribePixelFormat можно получить описание видеоформата для окна - в виде структуры PIXELFORMATDESCRIPTOR.
Каждый бит поля dwFlags в ней указывает на наличие какой-либо возможности (например, GL_STEREO - стереоскопическое изображения). В данном случае, для нас сейчас важны биты PFD_GENERIC_ACCELERATED и PFD_GENERIC_FORMAT. Возможны их следующие сочетания:
PFD_GENERIC_ACCELERATED PFD_GENERIC_FORMAT Смысл
- 0 0 полноценный ICD-драйвер с функциями ускорения
- 0 1
- 1 0 режим программной эмуляции; всю работу выполняет центральный процессор
- 1 1 MCD-драйвер; аппаратно реализуется только часть функций ускорения
Кроме того, функция glGetString(GL_RENDERER) возвращает строку с названием устройства, которая содержит имя вашей видеокарты, установленного на ней 3D-чипа, или один из следующих текстов:
- "GDI Generic" - программный Microsoft OpenGL
- "Generic/MMX" - программный SGI OpenGL
- "Mesa" - при использовании MESA