2012-05-10 43 views
23

我正在編寫DirectX遊戲,當我在Optimus筆記本電腦上運行Intel GPU時,會導致可怕的性能。如果我使用上下文菜單強制使用NVIDIA GPU,或者將我的可執行文件重命名爲bf3.exe或其他着名的遊戲可執行文件名稱,則性能如預期的那樣。
顯然,當我不得不重新分配我的遊戲時,這兩種解決方案都不是可接受的解決方案,那麼有沒有一種方法可以強制筆記本電腦使用NVIDIA GPU?

我已經嘗試使用DirectX來枚舉適配器(IDirect3D9 :: GetAdapterCount,IDirect3D9 :: GetAdapterIdentifier)並且它不起作用:只有1個GPU正在報告(正在使用中)。在Optimus筆記本電腦中以編程方式強制NVIDIA GPU

回答

4

在轉換到GPU之前,Optimus白皮書http://www.nvidia.com/object/LO_optimus_whitepapers.html的確切含義尚不清楚。該白皮書稱DX,DXVA和CUDA呼叫被檢測到並將導致GPU開啓。但是此外,決定基於NVIDIA維護的配置文件,當然,您的遊戲還不存在。

有一件事可以嘗試CUDA呼叫,例如cuInit(0);。與DX和DXVA不同的是,英特爾集成顯卡無法處理該問題,因此應該強制切換到GPU。

+0

有沒有人有這種方法的實際成功?我只是在創建我的OpenGL上下文之前嘗試調用'cuInit',我得到的不是NVidia的Intel上下文。 – rotoglup

+0

@rotoglup:請讓我們知道您正在運行的操作系統,如果您找到解決方案,請將其添加爲對此問題的答案。 –

+0

我正在運行Win7主頁x64 SP1 + NVidia 296.16驅動程序。對於如何繼續:我對NVIDIA®(英偉達™)Optimus平臺NVIDIA®(英偉達™)CUDA開發指南)(http://developer.download.nvidia.com/compute/cuda/docs/CUDA_Developer_Guide_for_Optimus_Platforms.pdf)doc提到,綁定OpenGL上下文到CUDA不適用於Optimus平臺,它說你需要NVidia控制面板中的「應用程序配置文件」......也許NVAPI允許以編程方式創建這樣的配置文件,但NVidia開發人員網站已關閉ATM。 – rotoglup

32

http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf從302個開始驅動它足以與下列庫的一個靜態鏈接:vcamp110.dllvcamp110d.dllnvapi.dllnvapi64.dll的OpenCL 。.DLLnvcuda.dllcudart *,或導出NvOptimusEnablement變量在你的程序:

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

+1爲啓用變量(和相應的鏈接);注意:不適用於我的310驅動程序,但在更新至320 – NobodysNightmare

+1

後工作。應注意,NVIDIA控制面板中的首選圖形處理器設置必須設置爲「自動選擇」才能使其工作。 – Nathan

+0

這不再適用(GTX 960M - 驅動程序v385.41) – Matthias

相關問題