【问题标题】:Select a graphic device in windows + opengl在 windows + opengl 中选择图形设备
【发布时间】:2011-05-17 19:50:50
【问题描述】:

我知道如何使用 openGL(使用 Win32 或其他工具包)打开窗口。但是当系统有2个显卡时。如何选择要渲染的图形设备?我的编程语言是 C++,我专注于 windows,但欢迎任何示例。

编辑:也许更好地解释我的问题是个好主意,以增加一些观点:我的新笔记本电脑有两个显卡。集成的 Intel HD 和 GeForce GT 540M。英特尔卡大部分时间都可以渲染 SO,因为它可以节省电池。当游戏开始时,GeForce 会自动启动。该系统被 nvidia (http://www.nvidia.com/object/optimus_technology.html) 称为“optimus”。问题是当我启动我的应用程序时,检测到的de opengl驱动程序是2.1,并且供应商是英特尔,我不知道如何切换到其他设备。

我终于找到了这个信息。如果您不使用 nvidia,它并不太有用,但我让任何可以阅读 http://developer.download.nvidia.com/compute/cuda/3_2/toolkit/docs/CUDA_Developer_Guide_for_Optimus_Platforms.pdf

的人使用

【问题讨论】:

    标签: c++ winapi opengl


    【解决方案1】:

    最简单的解决方案是将此代码 sn-p 粘贴到应用程序的某个位置。这将告诉 Nvidia 和 AMD 驱动程序在您的应用启动时切换到强大的 GPU。

    // enable optimus!
    extern "C" {
        _declspec(dllexport) DWORD NvOptimusEnablement = 1;
        _declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
    }
    

    编辑:添加 AMD 关键字

    【讨论】:

    • 对于 AMD 等效项,请参阅this 问题。
    【解决方案2】:

    我不是 100% 确定,但我似乎记得在 Windows 下这是不可能的,除了在特定屏幕上创建一个窗口。

    NVidia 提供了一个名为 WGL_NV_gpu_affinity 的扩展。我不确定这是否仍然可用,以及它是否如您所愿。

    编辑:

    我看到another thread 中已经提供了类似的信息,并附加了指向this PDF 的链接。也许不是一个令人满意的答案,但至少有一些信息。

    【讨论】:

    • 这个扩展名为 WGL_nv_gpu_affinity 的事实表明它适用于 Windows,我认为缺少的是 linux (GLX_...)。但是 ATI/AMD 有一个类似的扩展名为 AMD_gpu_association,它有适用于 windows (WGL) 和 linux (GLX) 的版本。
    • 你当然是对的(我需要咖啡)。编辑了我的答案,虽然不是很多。 :s
    • 我刚刚在我全新的 Optimus 机器上尝试了WGL_NV_gpu_affinity,尝试在 NVidia GPU 上创建 GL - 没有成功,NVidia 驱动程序甚至没有公开扩展。更糟糕的是,由于您需要创建一个 GL 上下文来获取 WGL 函数指针,因此您首先会获得一个 Intel 上下文,它显然对 NV 扩展一无所知...
    • 目前唯一的解决方案是在 nvidia 面板中配置启动选项并分配正确的卡。我还没有找到任何方法来选择所需的图形卡。
    • wgl_nv_gpu_affinity 扩展仅适用于 nvidia Quadro 卡驱动程序。
    【解决方案3】:

    转到 Nvidia 控制面板 > 管理 3d 设置 > 选择首选图形处理器。默认情况下,您可以看到自动选择。将其更改为您想要的 GPU。

    【讨论】:

    • 您的答案适合最终用户,但不适合开发人员。不过测试时还是不错的,谢谢。
    【解决方案4】:

    您应该使用 WGL_NV_gpu_affinity 扩展来通过 OpenGL 使用多个 GPU 进行编程。 (以防万一,NVIDIA 卡)。但仅 QUADRO 系列支持。所以很遗憾你不能在你的系统上选择渲染显卡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2018-06-11
      • 2016-11-04
      相关资源
      最近更新 更多