4

我正在寻找一种方法来找出 C++ OpenGL 程序中当前使用的显卡驱动程序的名称。充其量是一种独立于平台的方式(Linux 和 Windows)。我唯一能找到的是这个,但这是一个 shell 解决方案,甚至可能会随着不同的发行版而变化(而且,Windows 仍然是一个问题)。

我已经用 GL_VENDOR 参数查看了 glGetString() ,但是它输出的是显卡本身的供应商,而不是驱动程序。我找不到任何可以满足我需求的选项/功能。

这个问题有简单的解决方案吗?

4

2 回答 2

3

试试这些:

const GLubyte* vendor = glGetString(GL_VENDOR); 
const GLubyte* renderer = glGetString(GL_RENDERER); 
const GLubyte* version = glGetString(GL_VERSION);
于 2016-03-01T19:19:05.913 回答
0

这可能不是最终的答案,但它可能会对您有所帮助。您可以在 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.

于 2012-11-29T17:45:15.973 回答