【发布时间】:2009-11-13 00:28:46
【问题描述】:
我正在尝试制作 2D 实时绘图。我尝试修改 qwt 的示波器示例,尝试使用 QGraphicsView 和 QPainter 来达到高帧率绘图。我正在使用 8 个通道来绘制来自 rs232 端口的数据。我每 10 毫秒采样一次。 也许我以错误的方式使用了 QPainter,但我无法快速绘制。以 qwt 为例,它不会更新整个屏幕,绘图速度很好,尤其是在 X11 中使用 Qt::WA_PaintOutsidePaintEvent 和 Qt::WA_PaintOnScreen。
现在我将 QGLWidget 子类化,并且我达到了可以接受的速度。但我想知道我是否可以改进它。
每次我收到一个新点时,我都会存储它,然后调用 updateGL(); 在这种情况下,我只收到了 y 坐标,但我将收到整对。
void Plot::addPoint(int y)
{
points[t].x=t;
points[t].y=y;
t++;
updateGL();
}
在 DrawGL() 中,我检查行是否到达屏幕的末尾,如果是 True,我会擦除屏幕 如果没有,我只画线的新部分。
glBegin(GL_LINES);
glVertex2i( points[t-1].x, points[t-1].y);
glVertex2i( points[t-2].x, points[t-2].y);
glEnd();
我已禁用抖动和多重采样,并且我使用的是平面阴影。 我正在使用正投影。
有什么方法可以画得更快吗?也许使用opengl进行离屏绘图并显示相应的像素图? 有没有类似的项目?
【问题讨论】: