我想获取有关当前正在运行的视频卡的信息。
基本上我的问题是如何从openGL 字符串GL_RENDERER 中获取设备ID。
我在 window 上。
我使用了 directx 函数 GetAdapterIdentifier( qt usage example see GpuDescription::detect() )。它适用于英伟达。如果我为我的应用程序手动切换视频卡 D3DADAPTER_IDENTIFIER9 具有正确的设备 ID。但是当我使用 amd radeon 时,这种方法失败了。 D3DADAPTER_IDENTIFIER9 仅包含我的集成显卡的信息(即使更改后)。但 OpenGL 字符串(GL_RENDERER)正确检测我的应用程序的视频卡配置。
因此如何安全地从 GL_RENDERER 获取 deviceid?有了 deviceid,我就可以获得我想要的任何信息。但问题是 GL_RENDERER 是一个字符串,我无法将它与任何其他系统字符串匹配。
最佳答案
您应该使用名为 EnumDisplayDevicesA
的 Win32 函数.使用它,您可以获得所有显示设备的列表,其名称和当前状态存储在 DISPLAY_DEVICEA
的实例中结构体。然后,在用户选择使用哪一个 GPU 后,您可以通过 CreateDCA
为该 GPU 指定设备上下文。称呼。如果此函数成功,您可以通过 wglCreateContext
继续创建 OpenGL 上下文。 (但在设置像素格式等之前,您可以阅读更多关于创建 OpenGL 上下文 here 的内容。
希望对你有所帮助。
关于c++ - 当前渲染视频卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593863/