NVIDIA Optimus开玩笑我的节目

时间:2017-01-07 23:58:23

标签: c# opengl nvidia

我在NVIDIA Optimus平台上运行的应用程序遇到问题:基本上是选择集成卡而不是分立卡。叹息。

这可能是由于将驱动程序从297.67更新为当前的(376)。所以我试着遵循NVIDIA indications,但每次尝试都失败了。我的应用程序基于.NET,它使用我自己的P / Invoke OpenGL函数包装器。

以下是尝试的选项:

  • 全局变量NvOptimusEnablement 我不知道如何在我的可执行文件/库中公开这样的元素。实际上可以使用UnmanagedExport,或使用post-build事件修改IL;遗憾的是,它非常有限,因为你需要修复二进制架构。我还没试过这个。
  • 静态库绑定除了DLL需要动态链接外,我尝试在启动时加载nvapi64.dllnvapi.dll但没有成功。但是,我已经下载了NvAPI SDK,它只包含静态库;另外我发现本地可用的NvAPI DLL几乎是空的,它们不包含任何有用的符号(我试过this,没有成功)。
  • 全局配置文件设置:我目前默认设置了NVIDIA显卡;我还尝试了自动选择选项并为我的应用程序创建了自定义配置文件。结果是GLControl设计代码显示VS2015在NVIDIA上运行(如图所示,我的表格的System.Windows.Forms设计器视图)

enter image description here

问题是在调试期间,应用程序显示它使用的是英特尔渲染而不是NVIDIA渲染器。

我错过了别的什么吗?如何在调试期间以编程方式确保在NVIDIA卡上运行?

只是为了记录,应用程序可以从我的this repository构建。

更新:似乎进程位数正在影响NVIDIA驱动程序的行为。如果我以32位(x86架构)强制运行我的应用程序,NVIDIA驱动程序按预期工作,同时将架构设置为x64或AnyCPU,它总是回退到集成的英特尔处理器。不是很有用,因为我的目标是x64架构。

0 个答案:

没有答案