Класс QQuickFramebufferObject
Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с использованием объекта буфера кадра (FBO) в Qt Quick. Подробнее...
| Заголовок: | #include <QQuickFramebufferObject> |
| qmake: | QT += quick |
| С версии: | Qt 5.2 |
| Наследует: | QQuickItem |
Открытые типы
| класс | Renderer |
Свойства
- mirrorVertically : bool
- textureFollowsItemSize : bool
- 23 свойства унаследованы от QQuickItem
- 1 свойство унаследовано от QObject
Открытые функции
| QQuickFramebufferObject(QQuickItem *parent = Q_NULLPTR) | |
| virtual Renderer * | createRenderer() const = 0 |
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
| void | setTextureFollowsItemSize(bool follows) |
| bool | textureFollowsItemSize() const |
Переопределённые открытые функции
| virtual bool | isTextureProvider() const |
| virtual void | releaseResources() |
| virtual QSGTextureProvider * | textureProvider() const |
- 95 открытых функций унаследованы от QQuickItem
- 32 открытых функции унаследованы от QObject
- 2 открытых функции унаследованы от QQmlParserStatus
Сигналы
| void | mirrorVerticallyChanged(bool) |
| void | textureFollowsItemSizeChanged(bool) |
- 1 сигнал унаследован от QQuickItem
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QQuickItem
- 1 открытый слот унаследован от QObject
- 11 статических открытых членов унаследованы от QObject
- 33 защищённых функций унаследованы от QQuickItem
- 9 защищённых функций унаследованы от QObject
Подробное описание
Класс QQuickFramebufferObject — это удобный класс для интеграции рендеринга OpenGL с использованием объекта буфера кадра (FBO) в Qt Quick.
На большинстве платформ рендеринг будет выполняться в отдельной нити. По этой причине класс QQuickFramebufferObject обеспечивает чёткое разделение между реализацией элемента и рендерингом FBO. Вся логика элемента, такая как свойства и вспомогательные функции для QML, должны располагаться в подклассе класса QQuickFramebufferObject. Всё, что относится к рендерингу, должно располагаться в классе QQuickFramebufferObject::Renderer.
Для предотвращения гонок и проблем с чтением/записью из двух нитей важно, чтобы рендерер и элемент никогда не читали или не записывали общие переменные. Обмен данными между элементом и рендерером должен в основном происходить через функцию QQuickFramebufferObject::Renderer::synchronize(). Эта функция будет вызвана в нити рендеринга, в то время как нить GUI заблокирована.
Также возможно использовать очереди подключений или события для обмена данными между элементом и рендерером.
И рендерер, и 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 создаётся один раз при первом отображении. Если оно установлено в значение true, FBO будет пересоздаваться каждый раз, когда меняются размеры элемента.
Значение по умолчанию — true.
Функции доступа:
| bool | textureFollowsItemSize() const |
| void | setTextureFollowsItemSize(bool follows) |
Сигнал уведомления:
| void | textureFollowsItemSizeChanged(bool) |
Документация по функциям-членам
QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = Q_NULLPTR)
Создаёт новый объект QQuickFramebufferObject с родителем parent.
[pure virtual] Renderer *QQuickFramebufferObject::createRenderer() const
Переопределите эту функцию для создания рендерера, используемого для рендеринга в FBO.
Эта функция будет вызвана в нити рендеринга, пока нить GUI заблокирована.
[virtual] bool QQuickFramebufferObject::isTextureProvider() const
Переопределено из QQuickItem::isTextureProvider().
[virtual] void QQuickFramebufferObject::releaseResources()
Переопределено из QQuickItem::releaseResources().
[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.9/qquickframebufferobject.html