Spec-Zone.ru › Qt 5.9

Класс Renderer

(QQuickFramebufferObject::Renderer)
Заголовок: #include <Renderer>
qmake: QT += quick
С момента: Qt 5.2
  • Список всех членов, включая унаследованные

Защищенные функции

Renderer()
virtual ~Renderer()
virtual QOpenGLFramebufferObject * createFramebufferObject(const QSize &size)
QOpenGLFramebufferObject * framebufferObject() const
void invalidateFramebufferObject()
virtual void render() = 0
virtual void synchronize(QQuickFramebufferObject *item)
void update()

Подробное описание

Класс QQuickFramebufferObject::Renderer используется для реализации логики отрисовки объекта QQuickFramebufferObject.

Документация по функциям-членам

[protected] Renderer::Renderer()

Создает новый рендерер.

Эта функция вызывается во время фазы синхронизации графа сцены, когда поток GUI заблокирован.

[virtual protected] Renderer::~Renderer()

Рендерер автоматически удаляется при очистке ресурсов графа сцены для элемента QQuickFramebufferObject.

Эта функция вызывается в потоке отрисовки.

[virtual protected] QOpenGLFramebufferObject *Renderer::createFramebufferObject(const QSize &size)

Эта функция вызывается, когда необходим новый FBO. Это происходит в первый кадр. Если QQuickFramebufferObject::textureFollowsItemSize установлено в значение true, она вызывается каждый раз, когда изменяются размеры элемента.

Возвращаемый FBO может иметь любые присоединенные элементы. Если QOpenGLFramebufferObjectFormat указывает, что FBO должен быть многообразным, внутренняя реализация рендерера выделит второй FBO и скопирует многообразный FBO в FBO, используемый для отображения текстуры.

Примечание: Некоторые аппаратные средства имеют проблемы с небольшими размерами FBO. size учитывает это, поэтому будьте осторожны при переопределении размера фиксированным размером. Минимальный размер 64x64 всегда должен работать.

Примечание: size учитывает коэффициент масштабирования пикселей устройства, то есть он уже умножен на правильный коэффициент масштабирования. При перемещении окна, содержащего элемент QQuickFramebufferObject, на экран с другими настройками FBO автоматически пересоздается, и эта функция вызывается с правильным размером.

[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const

Возвращает объект фреймбуфера, в который в настоящее время осуществляется отрисовка.

[protected] void Renderer::invalidateFramebufferObject()

Вызовите эту функцию во время synchronize(), чтобы аннулировать текущий FBO. Это приведет к созданию нового FBO с помощью createFramebufferObject().

[pure virtual protected] void Renderer::render()

Эта функция вызывается, когда FBO должен быть нарисован. В этот момент фреймбуфер привязывается, и glViewport был настроен для соответствия размеру FBO.

FBO будет автоматически отвязан после возвращения из функции.

Примечание: Не предполагайте, что состояние OpenGL по умолчанию при вызове этой функции, или что оно сохраняется между вызовами. Как рендерер Qt Quick, так и пользовательский код отрисовки используют один и тот же контекст OpenGL. Это означает, что состояние может быть изменено Quick перед вызовом этой функции.

Примечание: Рекомендуется вызывать QQuickWindow::resetOpenGLState() перед возвратом. Это сбрасывает состояние OpenGL, используемое рендерером Qt Quick, и таким образом предотвращает вмешательство изменений состояния, внесенных кодом отрисовки в этой функции.

[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)

Эта функция вызывается в результате QQuickFramebufferObject::update().

Используйте эту функцию для обновления рендерера с изменениями, произошедшими в элементе. item — это элемент, который создал этот рендерер. Функция вызывается один раз перед созданием FBO.

Например, если элемент имеет свойство цвета, которое контролируется QML, необходимо вызвать QQuickFramebufferObject::update() и использовать synchronize(), чтобы скопировать новое значение цвета в рендерер, чтобы он мог быть использован для отрисовки следующего кадра.

Эта функция — единственное место, где рендерер и элемент могут безопасно читать и писать члены друг друга.

[protected] void Renderer::update()

Вызовите эту функцию, когда FBO нужно отрисовать снова.

Эта функция может быть вызвана из render() для принудительного повторного отображения FBO перед следующей кадровой отрисовкой.

Примечание: Эта функция должна использоваться изнутри рендерера. Чтобы обновить элемент в потоке GUI, используйте QQuickFramebufferObject::update().

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

Spec-Zone.ru

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