Класс QOpenGLPaintDevice
Класс QOpenGLPaintDevice позволяет выполнять рисование в контексте OpenGL с помощью QPainter. Подробнее...
| Заголовок: | #include <QOpenGLPaintDevice> |
| qmake: | QT += gui |
| С: | Qt 5.0 |
| Наследуется от: | QPaintDevice |
Открытые функции
| QOpenGLPaintDevice() | |
| QOpenGLPaintDevice(const QSize &size) | |
| QOpenGLPaintDevice(int width, int height) | |
| виртуальный | ~QOpenGLPaintDevice() |
| QOpenGLContext * | context() const |
| qreal | dotsPerMeterX() const |
| qreal | dotsPerMeterY() const |
| виртуальный 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 |
Переопределённые открытые функции
| виртуальный QPaintEngine * | paintEngine() const |
- 14 открытых функций унаследовано от QPaintDevice
Переопределённые защищённые функции
| виртуальный int | metric(QPaintDevice::PaintDeviceMetric metric) const |
- 1 защищённая функция унаследовано от QPaintDevice
Подробное описание
Класс QOpenGLPaintDevice позволяет выполнять рисование в контексте OpenGL с помощью QPainter.
Класс 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()
Создаёт QOpenGLPaintDevice.
QOpenGLPaintDevice действует только для текущего контекста.
См. также QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)
Создаёт QOpenGLPaintDevice с заданным размером size.
QOpenGLPaintDevice действует только для текущего контекста.
См. также QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)
Создаёт QOpenGLPaintDevice с заданной шириной width и высотой height.
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() также вызовет этот метод.
По умолчанию реализация ничего не делает.
[virtual protected] int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
Переопределено из QPaintDevice::metric().
[virtual] QPaintEngine *QOpenGLPaintDevice::paintEngine() const
Переопределено из QPaintDevice::paintEngine().
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/archives/qt-5.6/qopenglpaintdevice.html