QPainter
на widget
QPainterPaths
, которые содержат заранее рассчитанные пути для рисованияwidget
в настоящее время является QWidget
, а не QGLWidget
, но это может измениться.QImage
и, наконец, нарисовать все изображения на widget
QPainterPaths
. уже разделены, так что проблема не в этомQImages
примерно в в 5 раз медленнее , чем наQWidget
QPainterPaths
, каждый из которых содержит около 150 линейных сегментовQPainter::Antialiasing
подсказки рендеринга, QPen
использует круглую шапку и круглое соединениеQPainterPaths
(и ширина линии + цвет; некоторыенарисованный, некоторыезаполненный)
QPainter
поддерживаетQPainterPaths
преобразовать во что-то другое, что можно нарисовать на OpenGL buffer
, это было бы хорошим решением.OpenGL
рендерингом вне экрана -и знаю, что существуют различные типы буферов OpenGL, большинство из которых предназначены не для рендеринга 2D-изображений, а для данных вершин.Paint Device for chunk | Rendering the chunk itself | Painting chunk on QWidget
-----------------------+----------------------------+--------------------------
QImage | 2000 ms | < 10 ms
QPixmap (*) | 250 ms | < 10 ms
QGLFramebufferObj. (*) | 50 ms | < 10 ms
QPicture | 50 ms | 400 ms
-----------------------+----------------------------+--------------------------
none (directly on a QWidget in paintEvent) | 400 ms
----------------------------------------------------+--------------------------
(*) These 2 lines have been added afterwards and are solutions to the problem!
Было бы хорошо, если бы вы могли также указать мне не -OpenGL -решение , так как я хочу скомпилировать свое приложение в двух версиях:OpenGL
и версия non-OpenGL
.
Кроме того, я хочу, чтобы решение могло отображаться в не -GUI-потоке .
Есть ли хороший способ эффективно рисовать фрагменты с экрана -?
Есть ли часть экрана -вне экрана QGLWidget
(? OpenGL
off -экранный буфер ), который можно использовать в качестве устройства рисования для QPainter
?