当前渲染视频卡

问题描述 投票:2回答:1

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

我在Windows上。

我已经使用了DirectX函数GetAdapterIdentifier(qt usage example see GpuDescription::detect())。对于Nvidia来说效果很好。如果我为应用程序手动切换视频卡,则D3DADAPTER_IDENTIFIER9具有正确的deviceID。但是当我使用AMD Radeon时,这种方法失败了。 D3DADAPTER_IDENTIFIER9仅包含集成视频卡的信息(即使更改后)。但是OpenGL字符串(GL_RENDERER)可以正确检测我的应用的视频卡配置。

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

c++ qt winapi opengl directx
1个回答
0
投票

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

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.