Qt 5.5和OpenGL:检索设备信息

Max*_*nov 2 c++ opengl qt

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

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

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

pep*_*ppe 5

  • 卡名:没有跨平台的获取方式.它可以作为一部分返回glGetString(GL_RENDERER),例如在我得到的NVIDIA上

    GeForce GTX 980 PCIe/SSE2

  • 卖方: glGetString(GL_VENDOR)

    NVIDIA公司

  • 总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)都有相同的方法.并且您想要使用解析器而不是再次具体到平台...