Nvidia Optimus 是我的一大难题。我刚买了一台新的笔记本电脑,它正在使用这种即时 gpu 切换废话。这意味着除非应用程序通过查询 GPU 的 3D 技术或 Directx 开始,否则它会使用集成的英特尔。这意味着许多应用程序不使用 GPU(即使您在 Nvidia 控制面板中指定它)。一些示例:如果您运行 WEI 评级或 dxdiag,或者在我的情况下.. xilisoft 视频转换器。这是一个程序,可以使用 GPU 来辅助视频编码的处理时间。然而,因为它在编码开始之前不会尝试访问 GPU.. 启用 GPU 辅助的选项是灰色的。令人抓狂。
所以,我在visual basic中做了一个非常简单的DLL来初始化directx。然后我在visual basic中创建了另一个程序......一个带有单个按钮的简单窗口。单击此按钮时,它会加载 dll 文件并运行向 Directx 发送初始化命令的函数。
通过运行“Nvidia Optimus GPU 状态查看器”以显示 dGPU 正在呈现哪些应用程序,我运行了我的简单程序。当然,它不会出现在查看器中。然后,当我按下按钮时,哇,它现在由 dGPU 渲染。
然而,这是我有限的编程知识结束的地方。这里的目标是当你有一个无法在 Nvidia 上运行的应用程序时,我希望它使用这个 dll。
DLL 注入:
我知道 DLL 注入 .. 但我不知道该怎么做。注入dll后..如何让程序调用启动directx进程的dll中的特定函数?
包装:
是否可以制作一个包装器/加载器来加载所需的应用程序,但在应用程序启动之前首先运行这个 directx 函数的代码......至少)。
部件:
也许我们可以在所需应用程序的入口点之后跳转到“代码洞穴”,然后加载 dll 并调用该函数。然后创建一个程序,该程序可以为任何所需的应用程序自动执行此操作。
无论如何,这就是我所在的地方。我会继续努力,但任何帮助将不胜感激。谢谢。