Я пытаюсь сделать 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 для закадрового рисования и отображения соответствующего растрового изображения?проект похож на этот?