Qt 加速二维绘图

Qt 加速二维绘图,qt,opengl,2d,plot,Qt,Opengl,2d,Plot,我正在做一个2D实时绘图。我尝试过修改qwt的示波器示例,尝试使用QGraphicsView和QPaint来实现高帧率绘图。我使用8个通道来绘制从rs232端口到达的数据。我每10毫秒取样一次。 也许我用错了画笔,但我画得不快。在qwt示例中,在wich不更新整个屏幕的情况下,绘图速度很好,特别是在使用Qt::WA_PaintOutsidePaintEvent和Qt::WA_PaintOnScreen的X11中 现在我正在对QGLWidget进行子类化,并且达到了可以接受的速度。但是我想知道我是

我正在做一个2D实时绘图。我尝试过修改qwt的示波器示例,尝试使用QGraphicsView和QPaint来实现高帧率绘图。我使用8个通道来绘制从rs232端口到达的数据。我每10毫秒取样一次。 也许我用错了画笔,但我画得不快。在qwt示例中,在wich不更新整个屏幕的情况下,绘图速度很好,特别是在使用Qt::WA_PaintOutsidePaintEvent和Qt::WA_PaintOnScreen的X11中

现在我正在对QGLWidget进行子类化,并且达到了可以接受的速度。但是我想知道我是否可以改进它

每次我收到一个新的点,我都会存储它,并且调用updateGL(); 在这种情况下,我只得到y坐标,但我要得到整对坐标

void Plot::addPoint(int y)
{
   points[t].x=t;
   points[t].y=y;
   t++;
   updateGL();
}
在DrawGL()中,我检查线条是否到达屏幕的末端,如果为真,我将擦除屏幕 如果不是,我只画线的新部分

  glBegin(GL_LINES);
    glVertex2i( points[t-1].x, points[t-1].y);
    glVertex2i( points[t-2].x, points[t-2].y);
 glEnd();
我已经禁用了抖动和多重采样,我使用的是平面阴影。 我用的是一个立体投影

有没有办法画得更快?可能使用opengl进行屏幕外绘图并显示相应的pixmap?
项目是否与此类似?

顶点缓冲区对象(可能还有显示列表)将有助于实现这一点。基本上,您需要一种减少GL调用次数的方法,这样做会更快。

我刚刚尝试使用vertex array,速度会更快。现在我要看一看显示列表和VBO(这是一件很复杂的事情,不是吗?)是的,它们并不像你现在看到的那么简单。此外,我觉得您可能应该将点数组视为循环缓冲区,并在每次调用DrawGL时重新绘制整个过程。这将使它尽可能简单,并且看起来应该相同。(可能更好;屏幕右侧的闪烁会更少。)我试图清除整个场景,并在每个绘图中重新绘制所有场景,但速度非常慢。但是,我不知道,我正在重新绘制8个小部件,每个小部件至少有800个点。都柏林人使事情变得更糟。我肯定做错了什么。使用单缓冲区,只绘制曲线的最后一部分,半可调速度:S可能制作一个包含8行的小部件?