Класс QOpenGLPaintDevice
Класс QOpenGLPaintDevice позволяет выполнять рисование в контексте OpenGL с помощью QPainter. Подробнее...
| Заголовок: | #include <QOpenGLPaintDevice> |
| qmake: | QT += gui |
| С момента: | Qt 5.0 |
| Наследует: | QPaintDevice |
Этот класс был введён в Qt 5.0.
Открытые функции
| QOpenGLPaintDevice(int width, int height) | |
| QOpenGLPaintDevice(const QSize &size) | |
| QOpenGLPaintDevice() | |
| virtual | ~QOpenGLPaintDevice() |
| QOpenGLContext * | context() const |
| qreal | dotsPerMeterX() const |
| qreal | dotsPerMeterY() const |
| virtual void | ensureActiveTarget() |
| bool | paintFlipped() const |
| void | setDevicePixelRatio(qreal devicePixelRatio) |
| void | setDotsPerMeterX(qreal dpmx) |
| void | setDotsPerMeterY(qreal dpmy) |
| void | setPaintFlipped(bool flipped) |
| void | setSize(const QSize &size) |
| QSize | size() const |
Переопределённые открытые функции
| virtual QPaintEngine * | paintEngine() const override |
Переопределённые защищённые функции
| virtual int | metric(QPaintDevice::PaintDeviceMetric metric) const override |
Подробное описание
Класс QOpenGLPaintDevice использует текущий контекст QOpenGL для отрисовки команд рисования QPainter. Контекст захватывается при создании. Требуется поддержка OpenGL (ES) 2.0 или выше.
Производительность
Класс QOpenGLPaintDevice почти всегда ускоряется аппаратно и потенциально может быть намного быстрее, чем программная растризация. Однако он более чувствителен к изменениям состояния и поэтому требует тщательного упорядочения команд рисования для достижения оптимальной производительности.
Антиялиасинг и качество
Антиялиасинг в движке рисования OpenGL выполняется с использованием многократной выборки. Большинству аппаратных средств требуется значительно больше памяти для выполнения многократной выборки, а полученное качество не соответствует качеству программного движка рисования. Сила движка рисования OpenGL заключается в его производительности, а не в качестве визуального отображения.
Изменения состояния
При рисовании в QOpenGLPaintDevice с помощью QPainter состояние текущего контекста OpenGL будет изменяться движком рисования для отражения его потребностей. Приложения не должны полагаться на сброс состояния OpenGL до первоначального состояния, особенно текущей программы шейдеров, области просмотра OpenGL, блоков текстур и режимов рисования.
Смешивание QPainter и OpenGL
При смешивании QPainter и OpenGL важно уведомить QPainter, что состояние OpenGL может быть загромождено, чтобы он мог восстановить своё внутреннее состояние. Это достигается вызовом QPainter::beginNativePainting() перед началом рендеринга OpenGL и вызовом QPainter::endNativePainting() после завершения.
См. также Пример окна OpenGL.
Документация по функциям-членам
QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)
Создаёт QOpenGLPaintDevice с заданной шириной и высотой.
QOpenGLPaintDevice действителен только для текущего контекста.
См. также QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)
Создаёт QOpenGLPaintDevice с заданным размером size.
QOpenGLPaintDevice действителен только для текущего контекста.
См. также QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice()
Создаёт QOpenGLPaintDevice.
QOpenGLPaintDevice действителен только для текущего контекста.
См. также QOpenGLContext::currentContext().
[virtual] QOpenGLPaintDevice::~QOpenGLPaintDevice()
Удаляет QOpenGLPaintDevice.
QOpenGLContext *QOpenGLPaintDevice::context() const
Возвращает контекст OpenGL, связанный с устройством рисования.
qreal QOpenGLPaintDevice::dotsPerMeterX() const
Возвращает количество пикселей на метр по горизонтали.
См. также setDotsPerMeterX().
qreal QOpenGLPaintDevice::dotsPerMeterY() const
Возвращает количество пикселей на метр по вертикали.
См. также setDotsPerMeterY().
[virtual] void QOpenGLPaintDevice::ensureActiveTarget()
Этот виртуальный метод предоставляется как обратный вызов, чтобы разрешить повторную привязку целевого объекта буфера фрейма или контекста, когда разные экземпляры QOpenGLPaintDevice поочерёдно выдают вызовы рисования.
beginNativePainting() также вызовет этот метод.
По умолчанию метод ничего не делает.
[override virtual protected] int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
Реализует: QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const.
[override virtual] QPaintEngine *QOpenGLPaintDevice::paintEngine() const
Реализует: QPaintDevice::paintEngine() const.
bool QOpenGLPaintDevice::paintFlipped() const
Возвращает true, если рисование отражено относительно оси Y.
См. также setPaintFlipped().
void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)
Устанавливает коэффициент пикселей устройства для устройства рисования на devicePixelRatio.
void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)
Устанавливает количество пикселей на метр по горизонтали на dpmx.
См. также dotsPerMeterX().
void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)
Устанавливает количество пикселей на метр по вертикали на dpmy.
См. также dotsPerMeterY().
END_OF_DOCUMENT_MARKERvoid QOpenGLPaintDevice::setPaintFlipped(bool flipped)
Устанавливает, должно ли рисование быть перевернуто относительно оси Y, в значение flipped.
См. также paintFlipped().
void QOpenGLPaintDevice::setSize(const QSize &size)
Устанавливает размер устройства рисования в пикселях до значения size.
См. также size().
QSize QOpenGLPaintDevice::size() const
Возвращает размер устройства рисования в пикселях.
См. также setSize().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qopenglpaintdevice.html