4

C++OpenGLプログラム内で現在使用されているグラフィックカードドライバーの名前を見つける方法を探しています。せいぜい、プラットフォームに依存しない方法(LinuxとWindows)でしょう。私が見つけた唯一のことはこれでしたが、これはシェルソリューションであり、ディストリビューションによって異なる場合もあります(それでも、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

これはおそらく最終的な答えではありませんが、役立つかもしれません。lsmodLinuxでは、とmodinfoコマンドの両方を組み合わせて、ドライバー名とバージョンを計算できます。

たとえば、mylsmodsは次を返します。

$ 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などであると推測される場合は、ドライバーの名前とバージョンを抽出するスクリプトを作成することができます... by grep / awk lsmod

于 2012-11-29T17:45:15.973 に答える