Класс QOpenGLPaintDevice
Класс QOpenGLPaintDevice позволяет выполнять рисование в контексте OpenGL с помощью QPainter. Подробнее...
| Заголовок: | #include <QOpenGLPaintDevice> |
| CMake: | find_package(Qt6 COMPONENTS OpenGL REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake: | QT += opengl |
| С момента: | Qt 5.0 |
| Наследуется от: | QPaintDevice |
Открытые функции
| 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 с заданной width и height.
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().
void 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-6.0/qopenglpaintdevice.html