Spec-Zone.ru › Qt 5.12

Класс Renderer

(QQuickFramebufferObject::Renderer)
Заголовок: #include <Renderer>
qmake: QT += quick
С тех пор: Qt 5.2
  • Список всех членов, включая унаследованные

Защищенные функции

Renderer()
virtual ~Renderer()
virtual QOpenGLFramebufferObject * createFramebufferObject(const QSize &size)
QOpenGLFramebufferObject * framebufferObject() const
void invalidateFramebufferObject()
virtual void render() = 0
virtual void synchronize(QQuickFramebufferObject *item)
void update()

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

Класс QQuickFramebufferObject::Renderer используется для реализации логики отрисовки объекта QQuickFramebufferObject.

Документация по функциям-членам

[protected] Renderer::Renderer()

Создает новый рендерер.

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

[virtual protected] Renderer::~Renderer()

Рендерер автоматически удаляется, когда ресурсы графа сцены для элемента QQuickFramebufferObject очищаются.

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

[virtual protected] QOpenGLFramebufferObject *Renderer::createFramebufferObject(const QSize &size)

Эта функция вызывается, когда требуется новый FBO. Это происходит на первом кадре. Если QQuickFramebufferObject::textureFollowsItemSize установлено в значение true, она вызывается каждый раз при изменении размеров элемента.

Возвращаемый FBO может иметь любые подключения. Если QOpenGLFramebufferObjectFormat указывает, что FBO должен быть многовыборочным, внутренняя реализация Renderer выделит второй FBO и скопирует многовыборочный FBO в FBO, используемый для отображения текстуры.

Примечание: Некоторые аппаратные средства имеют проблемы с небольшими размерами FBO. size учитывает это, поэтому будьте осторожны, переопределяя размер фиксированным размером. Минимальный размер 64x64 должен всегда работать.

Примечание: size учитывает коэффициент масштаба пикселей устройства, что означает, что он уже умножен на правильный коэффициент масштабирования. При перемещении окна, содержащего элемент QQuickFramebufferObject, на экран с другими настройками FBO автоматически пересоздается, и эта функция вызывается с правильным размером.

[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const

Возвращает объект фреймбуфера, в который в данный момент производится рендеринг.

[protected] void Renderer::invalidateFramebufferObject()

Вызовите эту функцию во время synchronize(), чтобы сделать текущий FBO недействительным. Это приведет к созданию нового FBO с помощью createFramebufferObject().

[pure virtual protected] void Renderer::render()

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

FBO будет автоматически отвязан после возвращения из функции.

Примечание: Не предполагайте, что состояние OpenGL установлено по умолчанию при вызове этой функции или что оно сохраняется между вызовами. Как рендерер Qt Quick, так и код пользовательской отрисовки используют один и тот же контекст OpenGL. Это означает, что состояние может быть изменено Quick до вызова этой функции.

Примечание: Рекомендуется вызывать QQuickWindow::resetOpenGLState() перед возвратом. Это сбрасывает состояние OpenGL, используемое рендерером Qt Quick, и тем самым предотвращает вмешательство от изменений состояния, внесенных кодом рендеринга в этой функции.

[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)

Эта функция вызывается в результате QQuickFramebufferObject::update().

Используйте эту функцию для обновления рендерера с изменениями, произошедшими в элементе. item — это элемент, который создал этот рендерер. Функция вызывается один раз до создания FBO.

Например, если элемент имеет свойство цвета, которое контролируется QML, необходимо вызвать QQuickFramebufferObject::update() и использовать synchronize(), чтобы скопировать новое значение цвета в рендерер, чтобы он мог быть использован для рендеринга следующего кадра.

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

[protected] void Renderer::update()

Вызовите эту функцию, когда FBO необходимо отрисовать снова.

Эта функция может вызываться из render() для принудительного повторного рендеринга FBO перед следующим кадром.

Примечание: Эта функция должна использоваться внутри рендерера. Чтобы обновить элемент в потоке GUI, используйте QQuickFramebufferObject::update().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qquickframebufferobject-renderer.html

Spec-Zone.ru

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