Qt 5.5和OpenGL:检索设备信息

时间:2015-09-03 23:06:09

标签: c++ qt opengl

我编写了一个Qt 5.5应用程序,它以QOpenGLWidget的形式使用OpenGL。现在我想要它,以便用户可以从应用程序中看到他们的设备信息。通过这个我的意思是:

  • 卡片的名称,例如“GT 640”
  • 供应商
  • 总GPU内存
  • 驱动程序版本
  • 扩展名单

到目前为止,我自己一直无法找到任何相关功能。虽然我知道这可以通过调用OpenGL来完成,但我宁愿将所有代码保持在相对较高的水平。我发现2004年this非常老的帖子说Qt没有这个功能,但可能时间已经改变了?

1 个答案:

答案 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()QOpenGLFunctionsQOpenGLVersionFunctions等)。任何其他GL解析器(例如GLEW)都有相同的方法。你希望使用解析器,而不是再次进入特定平台......