Класс QQuickFramebufferObject
Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с использованием объекта буфера кадра (FBO) в Qt Quick. Подробнее...
| Заголовок: | #include <QQuickFramebufferObject> |
| qmake: | QT += quick |
| С тех пор: | Qt 5.2 |
| Наследует: | QQuickItem |
Типы публичного доступа
| класс | Renderer |
Свойства
- mirrorVertically : bool
- textureFollowsItemSize : bool
- 24 свойства унаследованы от QQuickItem
- 1 свойство унаследовано от QObject
Функции публичного доступа
| 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 |
- 101 функция публичного доступа унаследована от QQuickItem
- 31 функция публичного доступа унаследована от QObject
- 2 функции публичного доступа унаследованы от QQmlParserStatus
Сигналы
| void | mirrorVerticallyChanged(bool) |
| void | textureFollowsItemSizeChanged(bool) |
- 2 сигнала унаследованы от QQuickItem
- 2 сигнала унаследованы от QObject
Статические члены публичного доступа
| const QMetaObject | staticMetaObject |
- 9 статических членов публичного доступа унаследованы от QObject
Дополнительные унаследованные члены
- 1 public slot унаследован от QQuickItem
- 1 public slot унаследован от QObject
- 33 защищённые функции унаследованы от QQuickItem
- 9 защищённых функций унаследованы от QObject
Подробное описание
Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с использованием объекта буфера кадра (FBO) в Qt Quick.
На большинстве платформ рендеринг будет выполняться в отдельной потоке. По этой причине класс 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 и других классах, использующих поставщиков текстур.
См. также Граф сцены — рендеринг FBO и Граф сцены и рендеринг.
Документация по свойствам
mirrorVertically : bool
Это свойство управляет тем, будет ли размер содержимого FBO отражаться по вертикали при рисовании. Это позволяет легко интегрировать код стороннего рендеринга, который не соответствует стандартным ожиданиям.
Значение по умолчанию — false.
Это свойство было введено в Qt 5.6.
Функции доступа:
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
Сигнал уведомления:
| void | mirrorVerticallyChanged(bool) |
textureFollowsItemSize : bool
Это свойство определяет, следует ли размер текстуры FBO размерам элемента QQuickFramebufferObject. Когда это свойство ложно, FBO создаётся один раз при первом отображении. Если оно истинно, 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().
[override virtual] void QQuickFramebufferObject::releaseResources()
Переопределено из QQuickItem::releaseResources().
[override virtual] QSGTextureProvider *QQuickFramebufferObject::textureProvider() const
Переопределено из QQuickItem::textureProvider().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qquickframebufferobject.html