我有双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);
其中dxgiAdapter
为dxgiFactory -> EnumAdapters(1, &dxgiAdapter_);
1
是Nvidia GPU索引,0 - intel HD GPU索引。
但我的程序仍在使用intel的GPU。 有什么问题?
答案 0 :(得分:0)
尝试传递nullptr
而不是dxgiAdapter
,NvOptimusEnablement
应该自行处理。例如,在我的机器上,首先是nvidia GPU,然后是英特尔高清显卡,所以你可能会选择英特尔。并确保在nvidia控制面板中的某个位置设置了首选图形处理器以进行自动选择。