我正在寻找一种方法来找出 C++ OpenGL 程序中当前使用的显卡驱动程序的名称。充其量是一种独立于平台的方式(Linux 和 Windows)。我唯一能找到的是这个,但这是一个 shell 解决方案,甚至可能会随着不同的发行版而变化(而且,Windows 仍然是一个问题)。
我已经用 GL_VENDOR 参数查看了 glGetString() ,但是它输出的是显卡本身的供应商,而不是驱动程序。我找不到任何可以满足我需求的选项/功能。
这个问题有简单的解决方案吗?
试试这些:
const GLubyte* vendor = glGetString(GL_VENDOR);
const GLubyte* renderer = glGetString(GL_RENDERER);
const GLubyte* version = glGetString(GL_VERSION);
这可能不是最终的答案,但它可能会对您有所帮助。您可以在 Linux 下结合lsmod
和命令计算出驱动程序名称和版本。modinfo
例如,我lsmods
返回以下内容:
$ lsmod
Module Size Used by
autofs 28170 2
binfmt_misc 7984 1
vboxnetadp 5267 0
vboxnetflt 14966 0
vboxdrv 1793592 2 vboxnetadp,vboxnetflt
snd_hda_codec_nvhdmi 15451 1
snd_hda_codec_analog 80317 1
usbhid 42030 0 hid
nvidia 11263394 54
从中我知道nvidia指的是显卡。
然后我可以跑步modinfo nvidia
,我得到
filename: /lib/modules/2.6.35-32-generic/kernel/drivers/video/nvidia.ko
alias: char-major-195-*
version: 304.54
supported: external
license: NVIDIA
alias: pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias: pci:v000010DEd00000AA3sv*sd*bc0Bsc40i00*
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends:
我可以提取驱动程序版本等...
我知道这既不是一个直接的解决方案也不是多平台的,但是如果您猜测大多数名称将是 nvidia、ati、intel 等,您可能会制定一个提取驱动程序名称和版本的脚本...通过 grep / awk 的输出lsmod
.