2015-09-03 112 views
1

我已經編寫了一個Qt 5.5應用程序,它使用QOpenGLWidget形式的OpenGL。現在我想要它,以便用戶可以從應用程序中看到他們的設備信息。我的意思是沿着這樣的方向:Qt 5.5和OpenGL:檢索設備信息

  • 該卡的名字,例如「GT 640」
  • 供應商
  • 總GPU內存
  • 驅動程序版本
  • 的擴展名列表

到目前爲止,我本人一直無法找到任何相關的功能。雖然我知道這可以通過調用OpenGL來完成,但我寧願將所有代碼保持在相對較高的級別。我從2004年發現了一個非常古老的文章this,指出Qt沒有這個功能,但是時代已經改變了?

+1

總GPU內存和驅動程序版本是粗糙的,但其他三件事情很容易得到。我用AMD,NV和Intel的專有API封裝了我的工作,以獲得前面提到的兩件事情,而且您可能必須自己去做。 –

回答

4
  • 卡片名稱:沒有跨平臺獲取它的方式。 glGetString(GL_VENDOR)

    NVIDIA公司

    :它可能我得到

    的GeForce GTX 980的PCIe/SSE2

  • 供應商返回爲glGetString(GL_RENDERER)一部分,例如在NVIDIA

  • 總GPU記憶:絕對不是跨平臺。用於NVIDIA的GL_NVX_gpu_memory_info,用於AMD/ATI的AMD_gpu_association(依賴於平臺)或GL_ATI_meminfo。請注意,知道VRAM的數量幾乎是無用的,對於您將嘗試創建的任何特定對象(最大VBO大小,最大紋理大小,紋理級別大小,渲染緩衝區大小...),您都有幾個子限制。

  • 驅動程序版本:絕對不是跨平臺的,可以包括作爲glGetString(GL_VERSION)(它允許在年底供應商特定信息)的部分,否則就需要再一次去的平臺,具體:

    4.5.0 NVIDIA 346.87

  • 擴展列表:使用Qt,QOpenGLContext::extensions()hasExtension(),再加上解析函數指針傭工(getProcAddress()QOpenGLFunctionsQOpenGLVersionFunctions等)。任何其他GL解析器(例如GLEW)都有等效的方法。你使用的解析器,而不是去到特定再次平臺...