如何在OpenGL或Win32中获取显卡型号名称?

9

确定已安装的GPU类型的可靠方法是直接枚举硬件。在Linux中,您可以调用lspci并解析其输出,或遍历/sys/bus/pci/devices/*查找所有设备是否属于类0x030000(图形控制器)。我的Google-Fu未能找到在现代Windows机器上执行此操作的正确API。它肯定不是Win32 API的一部分,并且随着Windows驱动程序编程模型的每次更新而更改。 - datenwolf
2
那种方法并不是万无一失的,因为不能保证安装的设备被应用程序在请求的上下文中使用。驱动程序问题或软件切换可能会阻止这种情况发生。在拥有多个显卡的笔记本电脑上,安装了强大的显卡但未被使用是非常普遍的。 - OutOfBound
不相关,但是... Intel 论坛上的两个人实际上花时间帮助了一个 SEO 机器人吗? - Robert Rouhani
1个回答

15

您可以通过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"

我不知道它会对Intel或Amd卡返回什么。据我所知,字符串的格式和内容取决于实现。


我这里没有显卡。我下周会检查一下! - John Smith
你试过了吗?我很感兴趣,想知道在非 NVIDIA 显卡上的表现如何。 - OutOfBound
1
我在一张英特尔高清视频卡上进行了尝试,结果我的 glrender = “Intel HD something”。 - John Smith
1
我在我的英特尔显卡上尝试了一下,得到了以下信息:厂商:Intel,型号:Intel(R) HD Graphics 620。谢谢。 - Trucker
5
如果从搜索引擎来到这里并想知道如何处理glGetString返回的奇怪类型GLubyte*,则只需将其强制转换为char*,如果您想将其提供给printf或从中构造一个std::string。不需要解释。 - Alexandre
据我所知,我需要设置一个上下文才能从这个函数中检索到不止一个空字符串。有人可以帮助我如何设置这样的上下文吗? - prog2de

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接