在windows + opengl中选择一个图形设备

Kil*_*zor 13 c++ opengl winapi

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

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

最后我找到了这个信息.如果你没有使用nvidia,那就没用了,但我把它交给任何能阅读的人http://developer.download.nvidia.com/compute/cuda/3_2/toolkit/docs/CUDA_Developer_Guide_for_Optimus_Platforms.pdf

man*_*ged 12

最简单的Nvidia Optimus特定解决方案是将此代码段粘贴到应用程序的某个位置.这将告诉Nvidia驱动程序在您的应用程序启动时切换到功能强大的GPU.

// enable optimus!
extern "C" {
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于AMD等效项,请参阅[this](http://stackoverflow.com/questions/17458803/amd-equivalent-to-nvoptimusenablement)问题. (4认同)

Bar*_*art 8

我不是百分百肯定,但我似乎记得在Windows下这是不可能的,除了在特定屏幕上创建一个窗口.

NVidia提供了一个名为WGL_NV_gpu_affinity的扩展.我不确定它是否仍然可用,是否可以按照您的意愿运行.

编辑:

我看到在另一个帖子中已经提供了类似的信息,并附有该PDF的附加链接.也许不是一个令人满意的答案,但至少有一些信息.

  • 目前唯一的解决方案是在 nvidia 面板中配置启动选项并分配正确的卡。我还没有找到任何方法来动态选择所需的显卡。 (2认同)
  • wgl_nv_gpu_affinity扩展仅在nvidia Quadro卡驱动程序上可用。 (2认同)