всем привет!
делаю проект где на 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 наворотов