对于 X Window 使用 glxinfo 和 glxgears 检测.
glxinfo 显示 GLX 相关信息,包括图形加速、显卡、OpenGL 版本等。
direct rendering: Yes Yes 表示硬件加速,No 表示软件
OpenGL renderer string: Mesa GLX Indirect indirect表示是不是硬件加速。
glxgears 显示两个旋转的齿轮,并给出 FPS,即每秒多少祯,硬件加速要比软件加速快很多。配合 cpu 占用率,软件加速 CPU 负载明显增大。
在Windows平台上,OpenGL驱动可能有三种模式:纯软件、MCD和ICD。
Windows怎么实现OpenGL硬件加速呢?
OpenGL32.dll 是微软的 OpenGL1.1 纯软件实现,我们的程序都要动态链接到这 个 dll。如果安装 3D 芯片厂商的驱动程序,会将一个不同名字的 dll 放到 Windows 系统目录下,比如在 Windows 2000 下安装 nVIDIA GeForce2 MX 的驱 动程序,会在系统目录下放一个 nvoglnt.dll(这就是 nVIDIA 的 OpenGL 驱 动),并在注册表中登记 nvoglnt.dll,让 Windows 知道硬件加速 OpenGL 驱 动的名字,以后运行 OpenGL 程序,OpenGL32.dll 就会把 OpenGL 调用直接转到 nvoglnt.dll。
Windows平台上,一个OpenGL程序是否使用硬件加速由三个因素决定,这三个因 素缺一不可,否则程序都会运行于纯软件模式:
判断一种像素格式是否被显卡硬件所支持,可以用函数 DescribePixelFormat 取得该像素格式的数据,然后看结构体 PIXELFORMATDESCRIPTOR 中的 dwFlags 的值。
如果 PFD_GENERIC_FORMAT 被置 1,并且 PFD_GENERIC_ACCELERATED 被置 0, 即
(pfd.dwFlags & PFD_GENERIC_FORMAT) && !(pfd.dwFlags & PFD_GENERIC_ACCELERATED)
表明该像素格式不被显卡硬件支持,使用该像素格式的OpenGL程序将使用纯软件 模式渲染。
PFD_GENERIC_FORMAT被置1,并且PFD_GENERIC_ACCELERATED被置1,即
(pfd.dwFlags & PFD_GENERIC_FORMAT) && (pfd.dwFlags & PFD_GENERIC_ACCELERATED)
表明该像素格式被显卡硬件支持,并且程序使用MCD模式渲染。
PFD_GENERIC_FORMAT 被置 0,并且 PFD_GENERIC_ACCELERATED 被置 0,
!(pfd.dwFlags & PFD_GENERIC_FORMAT) && !(pfd.dwFlags & PFD_GENERIC_ACCELERATED)
表明该像素格式被显卡硬件支持,并且程序使用ICD模式渲染。
转来的