Nvidia optimus NvOptimusEnablement

时间:2018-04-27 14:47:05

标签: c++ directx nvidia

我有双GPU,Intel HD和Nvidia GPU。我想强制我的应用程序使用Nvidia GPU。 所以我创建了头文件

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

然后包含到我的cpp文件中,我正在使用Nvidia适配器创建设备

D3D10CreateDeviceAndSwapChain(dxgiAdapter, D3D10_DRIVER_TYPE_HARDWARE,
        0, 0, D3D10_SDK_VERSION, &swapChainDesc,
           &pSwapChain, &pDevice);

其中dxgiAdapterdxgiFactory -> EnumAdapters(1, &dxgiAdapter_);

1

是Nvidia GPU索引,0 - intel HD GPU索引。

但我的程序仍在使用intel的GPU。 有什么问题?

1 个答案:

答案 0 :(得分:0)

尝试传递nullptr而不是dxgiAdapterNvOptimusEnablement应该自行处理。例如,在我的机器上,首先是nvidia GPU,然后是英特尔高清显卡,所以你可能会选择英特尔。并确保在nvidia控制面板中的某个位置设置了首选图形处理器以进行自动选择。