当前渲染视频卡

时间:2016-07-26 15:19:43

标签: c++ qt winapi opengl directx

我想获取有关当前正在运行的视频卡的信息。 基本上我的问题是如何从openGL字符串GL_RENDERER获取设备ID。

我在窗户上。

我使用了directx函数GetAdapterIdentifier(qt usage example see GpuDescription::detect())。它适用于Nvidia。如果我为我的应用程序手动切换视频卡D3DADAPTER_IDENTIFIER9具有正确的deviceID。但是当我使用amd radeon时,这种方法失败了。 D3DADAPTER_IDENTIFIER9仅包含我的集成视频卡的信息(即使在更改后)。但OpenGL字符串(GL_RENDERER)正确检测我的应用程序的视频卡配置。

因此如何安全地从GL_RENDERER获取deviceid?有了deviceid然后我可以得到我想要的任何信息。但问题是GL_RENDERER是一个字符串,我不能与任何其他系统字符串匹配。

1 个答案:

答案 0 :(得分:1)

您应该使用名为EnumDisplayDevicesA的Win32函数。使用它,您可以获得所有显示设备的列表,其名称和当前状态存储在DISPLAY_DEVICEA结构的实例中。然后,在用户选择使用哪个GPU之后,您可以通过CreateDCA调用为此GPU指定创建设备上下文。如果此功能成功,则可以继续通过wglCreateContext创建OpenGL上下文(但是在设置像素格式等之前,您可以阅读更多关于创建OpenGL上下文here的信息。

希望对您有帮助。