Класс QQuickFramebufferObject
Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с помощью объекта фреймбуфера (FBO) в Qt Quick. Подробнее...
| Заголовок: | #include <QQuickFramebufferObject> |
| qmake: | QT += quick |
| С версии: | Qt 5.2 |
| Наследует: | QQuickItem |
Типы public
| класс | 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
- 34 открытых функции унаследованы от QObject
- 2 открытых функции унаследованы от QQmlParserStatus
Сигналы
| void | mirrorVerticallyChanged(bool) |
| void | textureFollowsItemSizeChanged(bool) |
- 2 сигнала унаследованы от QQuickItem
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QQuickItem
- 1 открытый слот унаследован от QObject
- 1 открытая переменная унаследована от QObject
- 10 статических открытых членов унаследованы от QObject
- 33 защищенных функций унаследованы от QQuickItem
- 9 защищенных функций унаследованы от QObject
- 2 защищенных переменных унаследованы от 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. Когда это свойство равно 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.
Эта функция будет вызвана в нити рендеринга, в то время как нить GUI заблокирована.
[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/archives/qt-5.11/qquickframebufferobject.html