【问题标题】:How to choose specific GPU when create OpenGL context [duplicate]创建OpenGL上下文时如何选择特定的GPU [重复]
【发布时间】:2021-07-21 12:59:52
【问题描述】:

在我的应用程序中的 MS Surface3 笔记本电脑上,我正在使用 SDL2 并尝试创建 OpenGL 上下文。 在创建过程中,它总是使用集成的英特尔 GPU 而不是 NVidia。而且我不知道如何选择离散GPU。 我今天用谷歌搜索了一整天,但只有一些关于通过 Optimus 选择它的信息? 我不知道这是什么,我的笔记本电脑上没有任何 Optimus 设置。无论如何,确实需要以编程方式选择 GPU,而不是使用控制面板。 使用OpenGL API真的没办法选择GPU吗?

我有另一个使用 DirectX 11 的应用程序。我可以通过简单的枚举轻松选择 GPU。所以 NVidia GPU 绝对可以在我的笔记本电脑上使用。我只是不知道如何使用 OpenGL 来选择它。

【问题讨论】:

    标签: windows opengl sdl-2


    【解决方案1】:

    OpenGL,或者更确切地说是它的 Win32 GDI 集成,不提供明确选择所需设备的方法。然而,Nvidia 和 AMD 的驱动程序提供了一种解决方法来选择程序,它们更喜欢在独立 GPU 上执行,而不是在集成 CPU 的 GPU 上执行。

    将此添加到程序的某个翻译单元中,例如包含main 函数的源文件:

    #ifdef __cplusplus
    extern "C" {
    #endif
    
    __declspec(dllexport) DWORD NvOptimusEnablement = 1;
    __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
    
    #ifdef __cplusplus
    }
    #endif
    

    当 Nvidia 和 AMD 驱动程序在程序中看到它们各自的符号被导出并设置为非零时,在创建 OpenGL 上下文时它们将优先于集成 GPU。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 2018-07-19
      • 2014-06-02
      • 1970-01-01
      相关资源
      最近更新 更多