2013-04-22 30 views
5

某些計算機安裝了多個圖形卡/芯片組,即使(例如,用於筆記本電腦)它們沒有多個顯示器時也是如此。如何使用特定的圖形驅動程序創建OpenGL上下文?

我在使用英特爾和Nvidia圖形硬件的筆記本電腦系統時遇到了問題。英特爾的驅動程序在其OpenGL支持方面非常糟糕,我的代碼正在運行以防止無法解釋的渲染錯誤,因爲在創建渲染上下文時,它似乎默認爲英特爾系統,而不是Nvidia。

有沒有辦法在啓動時避免這種情況?要說「輪詢所有可用的圖形驅動程序,請儘可能避免使用英特爾驅動程序,並使用可運行的驅動程序構建一個OpenGL渲染上下文」?

+0

在NVidia面板中,您可以選擇默認GPU – 2013-04-22 19:14:51

+0

@MichaelIV:謝謝,但那不是我要求的。 – 2013-04-22 19:17:57

+0

它不僅是關於驅動程序,也關於GPU。許多今天的筆記本電腦都有2個卡:Intel和專用的(NVidia或ATI)。因此,您必須首先通過偏置或Windows界面(如NVidia面板)設置硬件。如果不開關硬件首先嚐試選擇不同的驅動程序是沒有意義的。 – 2013-04-22 19:21:56

回答

1

有沒有可移植的方法做你問什麼,但本文檔介紹如何給力「高性能圖形渲染」與NVIDIA Optimus技術系統:

http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf 

具體請參考「全局變量NvOptimusEnablement「(在驅動程序 推出302新),其中說:

與發行302驅動程序啓動,應用開發者可以直接 在運行時的Optimus驅動使用高性能 圖形渲染任何應用程序 - 即使那些沒有現有應用程序配置文件的應用程序 也是如此。他們可以通過導出名爲NvOptimusEnablement的全局變量 執行此操作。 Optimus 驅動程序查找導出的存在和值。目前只有DWORD的LSB 很重要。值0x00000001表示 應使用高性能圖形執行渲染。一個 的值爲0x00000000表示應忽略此方法。

實例應用:

extern "C" { 
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; 
} 

另一種可能性是WGL_nv_gpu_affinity擴展,但您的WGL方面需要支持它,我不知道這是否適用於混合英特爾/ NVIDIA系統:

http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt 
相關問題