2016-07-13 39 views
7

我使用新的Qt 3D API在计算强度计算过程中显示3D场景。该场景仅作为对用户输入的响应而改变。但是,Qt 3D的默认行为似乎将场景的帧速率锁定为某个较高的常量值,在这种情况下会占用不可接受的资源量。如何在Qt 3D中控制帧频?

有没有办法控制Qt 3D中的帧频?理想情况下,我只想在对场景进行更改时渲染一个新帧,但将其降低到较小的固定值也足够。 Qt 3D文档很少,我一直无法找到一种方法去做这些事情。

编辑:我设法找到并将QRenderSettings::OnDemand应用于我的根节点和框架图,但它似乎没有效果,但this意味着它应该,因为我使用的是Qt 5.7。任何额外的投入都会非常受欢迎(即使它只是保证评论)。

编辑2:安装Fraps并直接测量帧速率后,看起来该场景实际上只是在应用QRenderSettings :: OnDemand时根据需要渲染帧。如果没有这个,帧速率保持在60fps,这正好是我的屏幕刷新率。 然而,,程序继续消耗大量的CPU时间,同时启用Qt 3D空转,无论是否显示3D窗口。我开始认为这是一个与帧率无关的单独的Qt 3D问题,并且可能会相应地提出一个新问题。

+0

你确定它与你的图形没有关系吗? –

+1

在什么fps运行,什么是您的偏好最高的fps? –

+0

这可能值得一看。它可能不会解决它,但它可能会解决这个问题。 http://stackoverflow.com/questions/36181532/qt-qapplication-framerate-drop-when-maximizing-window –

回答

2

这样做的最好方法可能是在头文件<FrameRateRange>中使用类FrameRateRange。这个类有两个公共职能:FrameRateRange()FrameRateRange(qreal minimumFrameRate, qreal maximumFrameRate)qreal是在后一个函数中出现在两个参数中的参数。这是在头文件<QtGlobal>中声明的全局typedefminimummaximum是以每秒帧数的帧速率。来自herehere的更多信息。

+1

FrameRateRange似乎与Qt 3D完全无关,所以我不能接受这个答案,但由于您是唯一可以回答的问题,而且您的问题有助于我更好地了解这个问题,所以我很可能很快就会奖励您的赏金。 –