【问题标题】:Nvidia optimus NvOptimusEnablementNvidia 擎天柱 NvOptimusEnablement
【发布时间】:2018-10-08 10:44:19
【问题描述】:

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

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

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

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 索引。

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

【问题讨论】:

    标签: c++ directx nvidia


    【解决方案1】:

    尝试传递nullptr 而不是dxgiAdapterNvOptimusEnablement 应该自己处理。例如,在我的机器上,nvidia GPU 排在第一位,然后是 Intel HD Graphics,所以您可能最终选择了 Intel。并确保在 nvidia 控制面板的某处您已将首选图形处理器设置为自动选择。

    【讨论】:

    • 我通过了 nullptr 但同样没有结果。 nullptr 也导致 nvwgf2um.dll 异常。
    • 你为什么还要使用 D3D10?为什么不是 11?
    • 与 D3D11 和 D3D12 的结果相同。无论如何,我有这个 nvwgf2um.dll 异常。 1. KERNELBASE.dll(RaiseException) 2. nvwgf2um.dll 3. KERNEL32.DLL(BaseThreadInitThunk) 4. ntdll.dll(RtlValidSecurityDescriptor)
    • @Alatriste 也许发布整个源代码,也许是不同的东西导致了这个问题
    • @Alatriste 虽然这不是一个完整的代码,但没关系,没关系。以防万一,您的驱动程序是否正常工作?也许更新它们或重新安装?一些快速的谷歌搜索告诉我它可能是驱动程序。代码对我来说看起来不错
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2011-02-14
    • 2013-08-17
    • 2017-04-29
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多