如何判断是否启用了OpenGL硬件加速

1649 篇文章 11 订阅
1623 篇文章 22 订阅
作者: 刘鹏
日期: 2009-09-15
随着 GPU、显卡等图形设备的增强,图形硬件加速得到广泛的运用,那么如何判断是否启用了硬件加速呢?本文针对不同的系统做了详细的介绍。
X Window

对于 X Window 使用 glxinfo 和 glxgears 检测.

glxinfo 显示 GLX 相关信息,包括图形加速、显卡、OpenGL 版本等。

direct rendering: Yes Yes 表示硬件加速,No 表示软件

OpenGL renderer string: Mesa GLX Indirect indirect表示是不是硬件加速。

glxgears 显示两个旋转的齿轮,并给出 FPS,即每秒多少祯,硬件加速要比软件加速快很多。配合 cpu 占用率,软件加速 CPU 负载明显增大。

Windows1

在Windows平台上,OpenGL驱动可能有三种模式:纯软件、MCD和ICD。

  • 安装系统时使用Windows自带的显卡驱动程序,那么OpenGL程序就会运行在软件模式下。
  • MCD(Mini Client Driver):penGL渲染管线的变换、光照部分仍然由软件实现,而光栅化部分则由硬件厂商实现,因此只要硬件支持,MCD可以硬件加速光栅化部分。
  • 完整的OpenGL驱动模型,比MCD复杂得多。硬件厂商要实现完整的OpenGL渲染管线,如变换、光照、光栅化等,因此只要硬件支持,ICD可以硬件加速整个OpenGL渲染管线。

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程序是否使用硬件加速由三个因素决定,这三个因素缺一不可,否则程序都会运行于纯软件模式:

  • 是否有一块3D加速卡;
  • 是否安装了显卡厂商提供的最新的驱动程序,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模式渲染。

Reference
  1. OpenGL显卡编程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值