【问题标题】:How to get the Graphics Card Model Name in OpenGL or Win32?如何在 OpenGL 或 Win32 中获取显卡型号名称?
【发布时间】:2017-07-03 21:45:45
【问题描述】:

我想知道 OpenGL 或 Win32 中的显卡型号名称,因为我在特定类型的显卡上存在内存泄漏错误(仅 Intel HD 而不是所有 Intel)。

这是错误:https://software.intel.com/en-us/forums/developing-games-and-graphics-on-intel/topic/280679

OpenGL 中的供应商名称是不够的。有人知道获取图形卡名称的方法与使用 Direct3D 不同吗?或者你认为我可以同时使用 D3D 和 OpenGL 吗? Get the graphics card model?

【问题讨论】:

  • 确定安装的GPU类型的万无一失的方法是直接枚举硬件。在 Linux 中,您要么调用 lspci 并解析其输出,要么遍历 /sys/bus/pci/devices/* 寻找所有属于 0x030000 类的设备(图形控制器)。我的 Google-Fu 未能在现代 Windows 机器上找到合适的 API。它当然不是 Win32 API 的一部分,并且会随着 Windows 驱动程序编程模型的每一次变化而变化。
  • 该方法不是万无一失的,因为它不能保证安装的设备被应用程序使用并且在请求的上下文中。驱动程序问题或软件切换可能会阻止这种情况。在具有多个显卡的笔记本电脑上,安装了强大的显卡但未使用的情况很常见。
  • 不相关,但是 uhhhhh.... 英特尔论坛帖子中的两个人真的花时间尝试帮助 SEO 机器人吗?

标签: c++ winapi opengl directx gpu


【解决方案1】:

您可以通过 OpenGL Api 获取所有信息。

https://www.khronos.org/opengl/wiki/Get_Context_Info

const GLubyte* vendor = glGetString​(GL_VENDOR); // Returns the vendor
const GLubyte* renderer = glGetString​(GL_RENDERER); // Returns a hint to the model

在我的例子中,渲染器返回以下字符串: "GeForce GT 750M/PCIe/SSE2"

我不知道,英特尔或 AMD 卡会返回什么。据我所知,字符串的格式及其内容取决于实现。

【讨论】:

  • 我这里没有显卡。下周我会检查它!
  • 你试过了吗?我很感兴趣,它在非 NVIDIA 卡上的结果如何。
  • 我在英特尔高清显卡上试过,我有 glrender = "英特尔高清的东西"
  • 我在我的 Intel 卡上试了试,我得到了 ..VENDOR: Intel ... MODEL: Intel(R) HD Graphics 620 ... 谢谢
  • 对于从搜索引擎来到这里并想知道如何处理 glGetString 返回的奇怪 GLubyte* 类型的任何人,如果您想提供,只需将其转换为 char* 似乎就足够了它到printf 或从中构造一个std::string
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2022-12-21
  • 1970-01-01
  • 2016-11-04
  • 2018-04-19
相关资源
最近更新 更多