我正在尋找一種方法來查找C++ OpenGL程序中當前使用的圖形卡驅動程序的名稱。充其量將是獨立於平臺的方式(Linux和Windows)。我唯一能找到的就是this,但這是一個外殼解決方案,甚至可能因不同的分佈而不同(並且Windows仍然是個問題)。在C++ OpenGL程序中找出顯卡驅動程序的名稱
我已經看過GL_VENDOR參數的glGetString(),但輸出顯卡本身的供應商,而不是驅動程序。我找不到任何給我我想要的選項/功能。
有沒有簡單的解決這個問題?
我正在尋找一種方法來查找C++ OpenGL程序中當前使用的圖形卡驅動程序的名稱。充其量將是獨立於平臺的方式(Linux和Windows)。我唯一能找到的就是this,但這是一個外殼解決方案,甚至可能因不同的分佈而不同(並且Windows仍然是個問題)。在C++ OpenGL程序中找出顯卡驅動程序的名稱
我已經看過GL_VENDOR參數的glGetString(),但輸出顯卡本身的供應商,而不是驅動程序。我找不到任何給我我想要的選項/功能。
有沒有簡單的解決這個問題?
這可能不是最終的答案,但它可能會幫助你。您可以在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
。
嘗試這些:
const GLubyte* vendor = glGetString(GL_VENDOR);
const GLubyte* renderer = glGetString(GL_RENDERER);
const GLubyte* version = glGetString(GL_VERSION);
也許'GL_RENDERER'? – chill
你希望用驅動程序名稱來完成什麼? – genpfault
@chill:nope,這給了我顯卡的確切名稱。 – bobbel