【发布时间】:2015-06-24 15:13:38
【问题描述】:
我正在通过 Qt 使用 OpenGL 渲染网格。 (Qt 5.4)。
在我的 OSX 计算机上,渲染速度相对较慢。当我旋转网格时,我可以看到渲染跟不上我的鼠标输入。
在同一台 OSX 计算机上运行 Windows 7 虚拟机和我的应用程序时,渲染非常流畅。看起来 Mac 版本几乎是在软件模式下渲染,而不是使用加速。
我使用 glGetString 来检查正在使用的供应商和渲染器,这看起来没问题:
"NVIDIA Corporation"
"NVIDIA GeForce GT 650M OpenGL Engine"
知道为什么原生 OSX 生成的代码会运行得这么慢。
顺便说一句:我正在使用GL_ARRAY_BUFFER 渲染一个由大约 150,000 个顶点组成的网格。
我对 OpenGL 很陌生,有什么想法吗?
【问题讨论】:
-
您需要展示一个重现此问题的最小案例。没有它,这个问题是没有用的。我们无法想象您的代码可能被破坏的所有方式。请记住,相当多的 Windows 代码和驱动程序都有针对损坏的应用程序的解决方法。您可能在不知不觉中触发了此类解决方法。
-
很公平,我把这个问题留了下来,看看是否有人遇到过这样的问题。我的直觉是它与 Qt 而不是 openGL 代码有关。我将在另一个问题中发布一个最小案例。
-
最小的情况属于这个问题!否则问题将被关闭,并且您可能会因发布无用的问题而面临暂停 - 它们会浪费每个人的时间。 Qt 对 OpenGL 没有什么作用。唯一可能的问题是
QOpenGLWidget中默认使用间接渲染。首先尝试使用QGLWidget,如果那里仍然很慢,那么问题与Qt 的关系为零——QGLWidget是平台GL 窗口上方的一个非常薄的垫片。它不会让你慢下来。实际上,QOpenGLWidget的唯一影响是间接渲染——这通常在 PC 上无关紧要。 -
是的 - 请关闭这个问题。
-
你是对的,这是导致减速的 opengl 调用之一。它与我传递给着色器的纹理有关。我需要调查为什么这会导致 OSX 出现问题。无论如何,我不相信这个问题会再适用于这个话题了。