2012-11-29 62 views
3

我正在尋找一種方法來查找C++ OpenGL程序中當前使用的圖形卡驅動程序的名稱。充其量將是獨立於平臺的方式(Linux和Windows)。我唯一能找到的就是this,但這是一個外殼解決方案,甚至可能因不同的分佈而不同(並且Windows仍然是個問題)。在C++ OpenGL程序中找出顯卡驅動程序的名稱

我已經看過GL_VENDOR參數的glGetString(),但輸出顯卡本身的供應商,而不是驅動程序。我找不到任何給我我想要的選項/功能。

有沒有簡單的解決這個問題?

+0

也許'GL_RENDERER'? – chill

+2

你希望用驅動程序名稱來完成什麼? – genpfault

+0

@chill:nope,這給了我顯卡的確切名稱。 – bobbel

回答

1

這可能不是最終的答案,但它可能會幫助你。您可以在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

+0

感謝這個精心設計的答案,幫助了我。 – bobbel

+0

@bobbel你能接受答案或者至少給它一個投票嗎?這可能有助於他人! – Dan

+0

哎呀,對不起,遲到的答案!應打開電子郵件通知:D – bobbel

1

嘗試這些:

const GLubyte* vendor = glGetString(GL_VENDOR); 
const GLubyte* renderer = glGetString(GL_RENDERER); 
const GLubyte* version = glGetString(GL_VERSION); 
相關問題