我编写了一个Qt 5.5应用程序,它以QOpenGLWidget的形式使用OpenGL。现在我想要它,以便用户可以从应用程序中看到他们的设备信息。通过这个我的意思是:
到目前为止,我自己一直无法找到任何相关功能。虽然我知道这可以通过调用OpenGL来完成,但我宁愿将所有代码保持在相对较高的水平。我发现2004年this非常老的帖子说Qt没有这个功能,但可能时间已经改变了?
答案 0 :(得分:5)
卡名:没有跨平台获取方式。 可能作为glGetString(GL_RENDERER)
的一部分返回,例如在NVIDIA上我得到
GeForce GTX 980 PCIe / SSE2
供应商:glGetString(GL_VENDOR)
NVIDIA Corporation
总GPU内存:绝对不是跨平台。使用GL_NVX_gpu_memory_info
表示NVIDIA,AMD_gpu_association
(取决于平台)或GL_ATI_meminfo
表示AMD / ATI。请注意,知道VRAM的数量几乎是无用的,您将尝试创建的任何特定对象有多个子限制(最大VBO大小,最大纹理大小,纹理级别大小,渲染缓冲区大小......)。
驱动程序版本:绝对不是跨平台,可能作为glGetString(GL_VERSION)
的一部分包含在内(最后允许特定于供应商的信息),否则您可以使用 。我需要再一次去特定平台:
4.5.0 NVIDIA 346.87
扩展程序列表:使用Qt,QOpenGLContext::extensions()
,hasExtension()
,以及已解析的函数指针助手(getProcAddress()
,QOpenGLFunctions
,QOpenGLVersionFunctions
等)。任何其他GL解析器(例如GLEW)都有相同的方法。你希望使用解析器,而不是再次进入特定平台......