加速2D绘图

时间:2009-11-12 15:51:57

标签: qt opengl 2d plot

我正在试图制作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()中,我检查线是否到达屏幕的末尾,如果是,则我擦除屏幕 如果没有,我只绘制线的新部分。

  glBegin(GL_LINES);
    glVertex2i( points[t-1].x, points[t-1].y);
    glVertex2i( points[t-2].x, points[t-2].y);
 glEnd();

我已禁用抖动和多重采样,我使用的是平面阴影。 我正在使用ortographic投影。

有什么方法可以更快地绘制?也许使用opengl进行离屏绘图并显示相应的像素图? 这是一个类似的项目吗?

1 个答案:

答案 0 :(得分:1)

顶点缓冲区对象(可能还有显示列表)对此有帮助。基本上你需要一种减少GL调用次数的方法,它会变快。