Spec-Zone.ru › Qt 5.14

Класс QQuickFramebufferObject

Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с помощью объекта framebuffer (FBO) в Qt Quick. Подробнее...

Заголовок: #include <QQuickFramebufferObject>
qmake: QT += quick
С тех пор: Qt 5.2
Наследует: QQuickItem

Этот класс был представлен в Qt 5.2.

  • Список всех членов, включая унаследованные

Открытые типы

класс Renderer

Свойства

  • mirrorVertically : bool
  • textureFollowsItemSize : bool

Открытые функции

QQuickFramebufferObject(QQuickItem *parent = nullptr)
virtual QQuickFramebufferObject::Renderer * createRenderer() const = 0
bool mirrorVertically() const
void setMirrorVertically(bool enable)
void setTextureFollowsItemSize(bool follows)
bool textureFollowsItemSize() const

Переопределённые открытые функции

virtual bool isTextureProvider() const override
virtual void releaseResources() override
virtual QSGTextureProvider * textureProvider() const override

Сигналы

void mirrorVerticallyChanged(bool)
void textureFollowsItemSizeChanged(bool)

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

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

Чтобы избежать гонок и проблем с чтением/записью из двух потоков, важно, чтобы рендерер и элемент никогда не читали или не записывали общие переменные. Общение между элементом и рендерером должно происходить в первую очередь через функцию QQuickFramebufferObject::Renderer::synchronize(). Эта функция будет вызываться в потоке рендеринга, пока поток графического интерфейса заблокирован.

Также возможно использование очередей соединений или событий для обмена данными между элементом и рендерером.

И рендерер, и FBO управляются памятью внутри.

Для рендеринга в FBO пользователь должен создать подкласс класса Renderer и переопределить его функцию Renderer::render(). Подкласс Renderer возвращается из createRenderer().

Размер FBO по умолчанию будет адаптироваться к размеру элемента. Если предпочтительнее фиксированный размер, установите textureFollowsItemSize в false и верните нужную текстуру из QQuickFramebufferObject::Renderer::createFramebufferObject().

Начиная с Qt 5.4, класс QQuickFramebufferObject является поставщиком текстур и может использоваться напрямую в ShaderEffects и других классах, которые используют поставщиков текстур.

Предупреждение: Этот класс подходит только при работе напрямую с OpenGL. Он несовместим с путьом рендеринга на основе RHI.

См. также Граф сцены — рендеринг FBO и Граф сцены и рендеринг.

Документация по свойствам

mirrorVertically : bool

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

Значение по умолчанию — false.

Это свойство было представлено в Qt 5.6.

Функции доступа:

bool mirrorVertically() const
void setMirrorVertically(bool enable)

Сигнал уведомления:

void mirrorVerticallyChanged(bool)

textureFollowsItemSize : bool

Это свойство управляет тем, будет ли размер текстуры FBO следовать размерам элемента QQuickFramebufferObject. Когда это свойство равно false, FBO будет создан один раз при первом отображении. Если оно установлено в true, FBO будет пересоздаваться каждый раз, когда изменяются размеры элемента.

Значение по умолчанию — true.

Функции доступа:

bool textureFollowsItemSize() const
void setTextureFollowsItemSize(bool follows)

Сигнал уведомления:

void textureFollowsItemSizeChanged(bool)

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

QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = nullptr)

Создаёт новый QQuickFramebufferObject с родителем parent.

[pure virtual] QQuickFramebufferObject::Renderer *QQuickFramebufferObject::createRenderer() const

Переопределите эту функцию для создания рендерера, используемого для рендеринга в FBO.

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

[override virtual] bool QQuickFramebufferObject::isTextureProvider() const

Переопределяет: QQuickItem::isTextureProvider() const.

[override virtual] void QQuickFramebufferObject::releaseResources()

Переопределяет: QQuickItem::releaseResources().

[override virtual] QSGTextureProvider *QQuickFramebufferObject::textureProvider() const

Переопределяет: QQuickItem::textureProvider() const.

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

Spec-Zone.ru

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