我想获取有关当前正在运行的视频卡的信息。
基本上我的问题是如何从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是一个字符串,我无法将其与任何其他系统字符串匹配。
最佳答案
您应该使用Win32函数EnumDisplayDevicesA
。使用它,您可以获得所有显示设备的列表,其名称和当前状态存储在DISPLAY_DEVICEA
结构的实例中。然后,在用户选择使用哪个GPU之后,您可以通过CreateDCA
调用专门为此GPU创 build 备上下文。如果此功能成功,则可以继续通过wglCreateContext
创建OpenGL上下文(但是在设置像素格式等之前,您可以阅读更多关于创建OpenGL上下文here的信息。
希望对您有所帮助。