【问题标题】:Find out name of graphics card driver in a C++ OpenGL program在 C++ OpenGL 程序中找出显卡驱动程序的名称
【发布时间】:2016-03-02 03:19:05
【问题描述】:

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

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

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

【问题讨论】:

  • 您希望通过驱动程序名称完成什么?
  • @chill:不,这给了我显卡的确切名称。
  • @genpfault:程序中存在一个错误,该错误仅在使用适用于 Nvidia 的 linux 开源 Nouveau 驱动程序时发生。如果我知道使用了此驱动程序,则该错误很容易解决。
  • 你有没有找到从 C++ 程序中检测 Nouveau 的方法? Nouveau 对于 OpenGL 代码来说仍然是一个严重的问题,因此能够检测到它并在它是驱动程序的情况下执行其他操作是很常见的需求。

标签: c++ opengl


【解决方案1】:

试试这些:

const GLubyte* vendor = glGetString(GL_VENDOR); 
const GLubyte* renderer = glGetString(GL_RENDERER); 
const GLubyte* version = glGetString(GL_VERSION);

【讨论】:

    【解决方案2】:

    这可能不是最终答案,但它可能对您有所帮助。您可以在 Linux 下结合 lsmodmodinfo 命令计算驱动程序名称和版本。

    例如,我的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 的输出。

    【讨论】:

    • 感谢这个详尽的回答,这对我有帮助。
    • @bobbel 你能接受答案或至少投赞成票吗?这可能对其他人有帮助!
    • 哎呀,抱歉回复晚了!应该打开电子邮件通知:D
    猜你喜欢
    • 2018-11-05
    • 2021-05-17
    • 1970-01-01
    • 2023-03-27
    • 2021-12-26
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多