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

时间:2011-05-17 19:50:50

标签: c++ winapi opengl

我知道如何用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,供应商是Intel,我不知道如何切换到其他设备。

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

的人

4 个答案:

答案 0 :(得分:11)

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

// enable optimus!
extern "C" {
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}

答案 1 :(得分:8)

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

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

修改

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

你应该使用WGL_NV_gpu_affinity扩展来使用OpenGL对多个GPU进行编程。 (如果是NVIDIA卡)。但它仅支持QUADRO系列。很遗憾,您无法在系统上选择渲染图形卡。