Класс 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) | |
| виртуальный Renderer * | createRenderer() const = 0 |
| bool | mirrorVertically() const |
| void | setMirrorVertically(bool enable) |
| void | setTextureFollowsItemSize(bool follows) |
| bool | textureFollowsItemSize() const |
Переопределённые функции публичного доступа
| виртуальный bool | isTextureProvider() const |
| виртуальный void | releaseResources() |
| виртуальный QSGTextureProvider * | textureProvider() const |
- 92 функции публичного доступа унаследованы от QQuickItem
- 31 функция публичного доступа унаследована от 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 создаётся один раз при первом отображении. Если оно истинно, 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().
END_OF_DOCUMENT_MARKER
[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.6/qquickframebufferobject.html