2013-08-06 43 views
3

下不切換,當我用用 「glGetString(GL_VERSION)」 和 「glGetString(GL_SHADING_LANGUAGE_VERSION)」 來檢查我的電腦上的OpenGL版本,我得到了以下信息:NVIDIA的Optimus卡的OpenGL

3.1.0 - 構建8.15.10.2538爲GL_VERSION

1.40 - 英特爾構建8.15.10.2538爲GL_SHADING_LANGUAGE_VERSION

當我跑了 「Geeks3D GPU效能查看器」,它顯示了OpenGL版本的我的顯卡(NVS 4200M)是

GL_VERSION :4.3.0

GLSL版本:通過CG編譯器4.30 NVIDIA

這是否意味着我的顯卡只支持OpenGL的一些功能4.3.0,我不能創建4.3語境?

+0

這是你的筆記本電腦無法切換到使用NVIDIA芯片問題;它改爲使用英特爾芯片。搜索「OpenGL」和「Optimus」。 –

+0

@Nicol Bolas非常感謝!我更改了NVIDIA控制面板上的設置。 – Amy

回答

13

您的圖形卡是一張NVIDIA Optimus卡。這意味着它會自動在集成的英特爾圖形和專用GPU之間進行選擇。英特爾圖形只支持3.1,而專用GPU支持4.3。取決於選擇哪一個,您將只支持該版本。 Optimus唯一的問題是它只會自動提取DirectX,CUDA,C++ AMP和OpenCL。

這已經引起很多confusionandfrustration

有幾個解決方案,以迫使專用GPU使用:

  1. 最簡單的,迫使你的應用程序通過NVIDIA控制面板使用專用的GPU。這通常是一個權宜之計,因爲它只能在你的機器上運行。
  2. 在程序開始時調用一小段(或鏈接到)CUDA或OpenCL,以使其觸發切換到專用卡。然而,這增加了對CUDA或OpenCL的依賴。
  3. 導出全局變量_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;。這通常是最好的解決方案,但是,根據您使用的是哪種語言,您可能無法導出全局變量。

NVIDIA發佈了這樣一份文件:http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf

+0

非常感謝!我按照你的第一個建議解決了這個問題。我將在稍後閱讀文檔並檢查其他解決方案。 – Amy

相關問題