QPainter 性能高帧率

发布于 2024-10-02 20:18:26 字数 269 浏览 3 评论 0原文

我试图在 QPainter(在 OpenGLwidget 中)中以 60fps 的速度显示视频,但

我遇到一个问题,有时绘图时间太长,并且在使用 QPainter 时会发生下一个重绘事件 - 这会生成警告和随机崩溃。

有几个问题:
是否有一种“Qt 方式”可以有效地互锁重绘调用,因为大概 QPainter 知道它正在被使用 - 或者我只是使用我的平台互斥支持?

有没有比仅调用 repaint() 的计时器更好的以高帧速率绘制的方法(当然也需要锁定到 VSync)?

I am trying to show video at 60fps in a QPainter (in an OpenGLwidget)

I am having an issue that sometimes the drawing takes too long and the next repaint event happens while QPainter is in use - which generates a warning and random crashes.

A couple of questions:
Is there a 'Qt way' to efficently interlock calls to repaint, since presumably QPainter knows it is being used - or do I just use my platforms mutex support?

Is there a better way to draw at high frame rates (which of course also needs to be locked to VSync) than just a timer calling repaint()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等往事风中吹 2024-10-09 20:18:26

尝试使用 update() 而不是 repaint()

该函数不会导致
立即重新喷漆;相反它
安排一个绘制事件进行处理
当Qt回到主赛事时
环形。这允许 Qt 优化
比a更快的速度和更少的闪烁
调用 repaint() 即可。

多次调用 update()
通常只会产生一个结果
PaintEvent() 调用。

Try to use update() instead of repaint().

This function does not cause an
immediate repaint; instead it
schedules a paint event for processing
when Qt returns to the main event
loop. This permits Qt to optimize for
more speed and less flicker than a
call to repaint() does.

Calling update() several times
normally results in just one
paintEvent() call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文