Класс 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
Подробное описание
Класс 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/archives/qt-5.11/qopenglpaintdevice.html