всем привет!
делаю проект где на 2D плоскость выводится результат обработки данных в РЕАЛЬНОМ масштабе времени(милисекунды). логическая организация и данные: - в простейшем случае это бинарная матрица 5000 на 5000, если в ячейке «1», то выводим пиксель, нет - ничего не рисуется; - поверх этой «карты» всякие линии, пиктограммы и пр служебная инфа. - все это дело выводится слоями и масштабируется
для GUI использую Qt 4.8 , а для визуализаии QGLWidget.
ну как в доках написано, я наследую класс. для рисования, т.к. я не сталкивался с openGl раньше и мне не нужна 3D графика, я решил использовать команды QPainter.
наследую: openGLwidget::openGLwidget(QWidget *parent) :QGLWidget(QGLFormat(QGL::SingleBuffer), parent) { //определяю нужные мне константы для рисования и тд. в настройки не лезу }
определяю paintGL(), для рисования используются примитивы пиксель, линия, окружность, текст и пиктограмма void openGLwidget::paintGL() { painter.begin(this); ... painter.drawLine(cPoint.rx(),cPoint.ry(),cPoint.rx()+x,cPoint.ry()+y); painter.drawPoint(cPoint.rx()+x,cPoint.ry()-y); ... и тп команды painter.end(); }
команда для рендеринга вызывается в таком вот цикле: while(!stop) { getdata(); // читаю данные processing(); // обрабатываю iko->updateGL(); //вывожу qApp->processEvents(); }
все работает, но как-то медленно - не быстрее, чем стандартный GDI. вопрос к профи: 1)подскажите пожалуйста как мне настроить opengl, чтобы добиться максимум быстродейтсвия (качество на втором плане) 2) если не использовать qpainter - будет ли быстрее? p.s. хочется обойтись без глубокого вникания в opengl, и по возможности пользоваться обертками, т.к. с точки зрения графики проект не требует выдающихся 3D наворотов