当前渲染视频卡

Current render video card

本文关键字:视频卡      更新时间:2023-10-16

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

我在窗户上。

我使用了directx函数GetAdapterIdentifier(qt用法示例请参见GpuDescription::detect())。这对英伟达来说效果很好。如果我手动切换应用程序的视频卡,D3DADAPTER_IDENTIFIER9具有正确的设备ID。但当我使用amd时,这种方法失败了。D3DADAPTER_IDENTIFIER9仅包含我的集成视频卡的信息(即使在更改后)。但是OpenGL字符串(GL_RENDRER)正确地检测到我的应用程序的视频卡配置。

因此,如何安全地从GL_RENDERER中获取设备ID?有了设备ID,我就可以获得我想要的任何信息。但问题是GL_RENDERER是一个字符串,我无法将它与任何其他系统字符串相匹配。

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

希望对你有所帮助。