Spec-Zone.ru › Qt 5.15

Класс QQuickFramebufferObject

Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с использованием объекта буфера кадра (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.

Предупреждение: Этот класс функционирует только при рендеринге Qt Quick с помощью OpenGL, либо непосредственно, либо через путь рендеринга на основе RHI. Он несовместим с другими бэкендами RHI, такими как Vulkan или Metal.

Для предотвращения гонок и проблем с чтением/записью из двух потоков важно, чтобы рендерер и элемент никогда не считывали или не записывали общие переменные. Общение между элементом и рендерером должно происходить главным образом через функцию 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 создается один раз при первом отображении. Если оно установлено в 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.15/qquickframebufferobject.html

Spec-Zone.ru

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