Класс QOpenGLPaintDevice
Класс QOpenGLPaintDevice позволяет выполнять рисование в контексте OpenGL с помощью QPainter. Подробнее...
| Заголовок: | #include <QOpenGLPaintDevice> |
| qmake: | QT += gui |
| С тех пор: | Qt 5.0 |
| Наследуется от: | QPaintDevice |
Открытые функции
| QOpenGLPaintDevice() | |
| QOpenGLPaintDevice(const QSize &size) | |
| QOpenGLPaintDevice(int width, int height) | |
| 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 |
- 14 открытых функций, унаследованных от QPaintDevice
Защищённые функции
| QOpenGLPaintDevice(const QOpenGLPaintDevice &) | |
| QOpenGLPaintDevice & | operator=(const QOpenGLPaintDevice &) |
Переопределённые защищённые функции
| virtual int | metric(QPaintDevice::PaintDeviceMetric metric) const override |
- 1 защищённая функция, унаследованная от QPaintDevice
Защищённые переменные
| int | d_ptr |
Подробное описание
Класс 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().
[protected] QOpenGLPaintDevice::QOpenGLPaintDevice(const QOpenGLPaintDevice &)
Создаёт экземпляр QOpenGLPaintDevice по умолчанию.
[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().
[override 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().
[protected] QOpenGLPaintDevice &QOpenGLPaintDevice::operator=(const QOpenGLPaintDevice &)
Оператор присваивания по копированию.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qopenglpaintdevice.html