gpt4 book ai didi

qt - 不同渲染速度的 Qt widgets

转载 作者:行者123 更新时间:2023-12-04 15:01:09 26 4
gpt4 key购买 nike

我正在构建一个应用程序(在 Qt 中),其中包含一些动态图表(意味着快速刷新新值),并从后台线程获取值。

我想要第一个图表,其细节很重要,以一种速度 (100 Hz) 刷新,另外 4 个图表以较低的速度 (10Hz) 刷新。

问题是,当我以相同的速率 (100 Hz) 刷新它们时,应用程序无法处理它并且计算机卡住,但是当刷新率不同时,第一个信号会出现伪影 (与例如以 10Hz 的频率运行它们相比)。

人工制品是波浪的形式(而不是直线,例如我得到一条“蛇”)。

关于为什么它有伪影(我猜是渲染限制)以及可以做些什么的任何建议?

最佳答案

即使这不能完全回答您的问题,我也会将其作为答案来写,因为对于评论来说太长了。

当目标是绘制流畅的运动图形时,基本的时间单位是帧。在 60 Hz 绘图速率下,帧为 16.67 毫秒。绘图速率需要与监视器绘图速率相匹配。画得比显示器快是完全没有必要的。

绘制图形时,图形的移动速度必须保持恒定。如果您想知道为什么,请快走 1 秒,然后慢 1 秒,快 1 秒,依此类推。这看起来并不顺利。

假设数据采样率为 60 Hz,每个样本表示为一个像素。在每一帧中,绘制所有新样本(在本例中为 1 个样本)并且图形移动一个像素。在每一帧中,移动速度是每帧一个像素。速度是恒定的,图形看起来很平滑。

但是如果数据采样率为 100 Hz,则在 40 帧中的一秒内绘制 2 个像素,在 20 帧中绘制 1 个像素。现在图形移动速度不再恒定,它像这样变化:每帧 2,2,1,2,2,1,... 像素。那看起来很糟糕。您可能认为帧时间太短(16.67 毫秒),您看不到这种微小的变化。但它是非常清楚地看到。甚至可以看到单个变速帧。

那么这个100Hz采样率的数据是如何平滑绘制出来的呢?通过保持速度不变,在这种情况下,每帧将是 1.67 (100/60) 像素。那当然需要亚像素绘图。因此,在每一帧中,图形移动 1.67 个像素。如果在绘制时缺少某些样本,则根本不会绘制它们。在实践中,这种情况会经常发生,例如 USB 数据采集卡可以突发性地提供数据样本。

如果图形绘制速度太慢以至于无法在 60 Hz 下完成怎么办?那么下一个最佳选择是以 30 Hz 绘制。然后,您为监视器绘制的每 2 个图像绘制一帧。第三个最佳选择是 20 Hz(显示器每绘制 3 个图像一帧),然后是 15 Hz(每 4 个图像绘制一帧)等等。 30赫兹画画虽然没有60赫兹画的流畅,但是速度还是可以保持恒定的,比变速画得更快看起来更好。

在您的情况下,20 Hz 的绘图速率可能相当不错。在每一帧中,将有 5 个新数据样本(如果您能够以恒定的 100 Hz 获取样本)。

关于qt - 不同渲染速度的 Qt widgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12840944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com