c++ - 当前渲染视频卡

标签 c++ qt winapi opengl directx

我想获取有关当前正在运行的视频卡的信息。
基本上我的问题是如何从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/

相关文章:

c++ - 在 Selene 中包装一个枚举以便在 Lua 中访问

c++ - 引发 QT QEvent::WindowActivate 事件

c++ - 使用 qt 和 opengl 显示图像,计时精度和 vsync 问题,c++

c++ - Qt:删除MainWindow后QMenu好像没有被删除

delphi - 如何过滤 Windows 中执行的应用程序?

Java JNA : PROCESSENTRY32. szExeFile 转换为 Java 字符串时返回 "????..."

c++ - 从 C++ 应用程序显示/隐藏桌面图标

c++ - 从 QML 访问 C++ 模型

c++ - 将 OpenCV 构建为静态库会导致数以千计的 undefined reference

c++ - 为什么 32 位整数的左位移位 "<<"在使用超过 32 次时没有按预期工作?