我有一个Qt应用程序,开始刷新60FPS,但我无法检测原因。
我使用了QML探查器,我看不到任何触发重绘的事件。 使用:
QSG_RENDERER_DEBUG=debug
QSG_RENDER_TIMING=1
我看到了
经常写的。在启动几秒后,消息开始以此速率显示,而不执行任何操作。时间似乎是随机的 - 有时是在5秒后开始,有时是在15秒后开始。Gui Thread:window = 0x7fffffffe400,polish = 0,lock = 0,block / sync = 15 - 动画= 0
使用:
QSG_VISUALIZE=changes
我看到整个屏幕都被刷新了 - 应用程序是全屏的。
我在Linux Debian 8,内核4.91上使用Qt 5.3。这大约占我的NVIDIA 980的25%。在Debian 8上,内核3.16它占据了超过50%的英特尔集成GPU。
您是否有任何关于如何检测触发刷新的提示的提示?
答案 0 :(得分:0)
在删除应用程序之后,我已经找到了一个老C ++课程:
::paint()
{
...
update();
...
}
这创建了一个无限paint<->update
循环,它不会因为它们在不同的线程中运行而没有触发stackoverflow:)
明显的随机性来自于C ++对象在QML代码的多个地方使用的事实。
我不知道这是否与原始问题相关,因为它是一个与Qt框架无关的典型编程错误。