Spec-Zone.ru › Qt 6.0

Класс QQuickFramebufferObject

Класс QQuickFramebufferObject — это вспомогательный класс для интеграции рендеринга OpenGL с использованием объекта буфера кадра (FBO) в Qt Quick. Подробнее...

Заголовок: #include <QQuickFramebufferObject>
CMake: find_package(Qt6 COMPONENTS Quick REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
С момента: Qt 5.2
Наследует: QQuickItem
  • Список всех членов, включая унаследованные

Общие типы

класс Renderer

Свойства

  • mirrorVertically : bool
  • textureFollowsItemSize : bool

Общие функции

QQuickFramebufferObject(QQuickItem *parent = nullptr)
виртуальный QQuickFramebufferObject::Renderer * createRenderer() const = 0
bool mirrorVertically() const
void setMirrorVertically(bool enable)
void setTextureFollowsItemSize(bool follows)
bool textureFollowsItemSize() const

Переопределённые общедоступные функции

виртуальный bool isTextureProvider() const override
виртуальный void releaseResources() override
виртуальный QSGTextureProvider * textureProvider() const override

Сигналы

void mirrorVerticallyChanged(bool)
void textureFollowsItemSizeChanged(bool)

Подробное описание

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

На большинстве платформ рендеринг будет выполняться в отдельном потоке. посвященном потоке. По этой причине класс 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 и Граф сцены и рендеринг.

Документация по свойствам

[since 5.6] 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.

Эта функция будет вызвана в потоке рендеринга, пока поток пользовательского интерфейса заблокирован.

[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-6.0/qquickframebufferobject.html

Spec-Zone.ru

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