我有双 GPU,Intel HD 和 Nvidia GPU。我想强制我的应用程序使用 Nvidia GPU。所以我创建了头文件
extern "C"
{
__declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}
然后包含到我用 Nvidia 适配器创 build 备的 cpp 文件中
D3D10CreateDeviceAndSwapChain(dxgiAdapter, D3D10_DRIVER_TYPE_HARDWARE,
0, 0, D3D10_SDK_VERSION, &swapChainDesc,
&pSwapChain, &pDevice);
其中 dxgiAdapter
是 dxgiFactory -> EnumAdapters(1, &dxgiAdapter_);
1
是 Nvidia GPU 索引,0 - intel HD GPU 索引。
但我的程序仍在使用英特尔的 GPU。有什么问题?
尝试传递 nullptr
而不是 dxgiAdapter
,NvOptimusEnablement
应该自行处理。例如,在我的机器上,nvidia GPU 排在第一位,然后是 Intel HD Graphics,所以您最终可能会选择 Intel。并确保在 nvidia 控制面板的某处您已将首选图形处理器设置为自动选择。
我是一名优秀的程序员,十分优秀!