Spec-Zone.ru › Qt 5.9

Класс 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

Переопределённые защищённые функции

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().

[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().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qopenglpaintdevice.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API