Spec-Zone.ru › Qt 5.12

Тип QML ShaderEffectSource

Отображает элемент Qt Quick в текстуру и отображает её. Подробнее...

Заявление импорта: import QtQuick 2.12
С тех пор: Qt 5.0
Наследует:

Item

  • Список всех членов, включая унаследованные

Свойства

  • формат : перечисление
  • скрытьИсточник : bool
  • живой : bool
  • mipmap : bool
  • рекурсивный : bool
  • образцы : int
  • источникЭлемента : Item
  • областьИсточник : прямоугольник
  • отражениеТекстуры : перечисление
  • размерТекстуры : размер
  • режимОбертывания : перечисление

Методы

  • планироватьОбновление()

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

Тип ShaderEffectSource отображает источникЭлемента в текстуру и отображает её в сцене. источникЭлемента отрисовывается в текстуру, как будто это корневой элемент с полной непрозрачностью. Таким образом, сам источникЭлемента может быть невидимым, но всё ещё отображаться в текстуре.

ShaderEffectSource может использоваться как:

  • источник текстуры в ShaderEffect. Это позволяет применять пользовательские эффекты шейдера к любому элементу Qt Quick.
  • кеш для сложного элемента. Сложный элемент может быть отрисован один раз в текстуру, которая затем может быть анимирована свободно без необходимости повторного рендеринга сложного элемента каждый кадр.
  • слой непрозрачности. ShaderEffectSource позволяет применять непрозрачность к элементам как группе, а не к каждому элементу индивидуально.

import QtQuick 2.0

Rectangle {
    width: 200
    height: 100
    gradient: Gradient {
        GradientStop { position: 0; color: "white" }
        GradientStop { position: 1; color: "black" }
    }
    Row {
        opacity: 0.5
        Item {
            id: foo
            width: 100; height: 100
            Rectangle { x: 5; y: 5; width: 60; height: 60; color: "red" }
            Rectangle { x: 20; y: 20; width: 60; height: 60; color: "orange" }
            Rectangle { x: 35; y: 35; width: 60; height: 60; color: "yellow" }
        }
        ShaderEffectSource {
            width: 100; height: 100
            sourceItem: foo
        }
    }
}

Тип ShaderEffectSource не перенаправляет какие-либо входные данные мыши или клавиатуры на источникЭлемента. Если вы скрываете источникЭлемента, установив свойство visible в ложь или opacity в ноль, он больше не будет реагировать на входные данные. В случаях, когда ShaderEffectSource предназначен для замены источникЭлемента, вы обычно хотите скрыть источникЭлемента, но при этом обрабатывать входные данные. Для этого вы можете использовать свойство скрытьИсточник.

Примечание: Если источникЭлемента представляет собой Rectangle с границей, то по умолчанию половина ширины границы выходит за пределы текстуры. Чтобы получить всю границу, вы можете расширить областьИсточник.

Примечание: ShaderEffectSource полагается на поддержку FBO для сглаживания краёв. Если подлежащая аппаратная часть не поддерживает это, что имеет место для большинства встроенных графических чипов, края, отрисованные внутри ShaderEffectSource, не будут сглаживаться. Один из способов исправить это — удвоить размер источника эффекта и отрисовать его с smooth: true (это значение по умолчанию для smooth). Это будет эквивалентно 4х сглаживанию, но с более низкой производительностью и большим использованием памяти.

Предупреждение: В большинстве случаев использование ShaderEffectSource снижает производительность, а во всех случаях увеличивает использование видеопамяти. Отрисовка через ShaderEffectSource также может привести к снижению качества, поскольку некоторые реализации OpenGL поддерживают многообразный буфер заднего плана, но не многообразные объекты фреймбуфера.

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

формат : перечисление

Это свойство определяет внутренний формат OpenGL текстуры. Изменение этого свойства имеет смысл в основном, когда элемент используется в качестве источника текстуры ShaderEffect. В зависимости от реализации OpenGL, это свойство может позволить вам сэкономить память текстуры.

  • ShaderEffectSource.Alpha - GL_ALPHA
  • ShaderEffectSource.RGB - GL_RGB
  • ShaderEffectSource.RGBA - GL_RGBA

Примечание: Некоторые реализации OpenGL не поддерживают формат GL_ALPHA.

скрытьИсточник : bool

Если это свойство имеет значение true, источникЭлемента скрывается, хотя он по-прежнему будет рендериться в текстуру. В отличие от скрытия источникЭлемента с помощью установки свойства visible в ложь, установка этого свойства в true не предотвратит получение источникЭлемента входных данных мыши или клавиатуры. Свойство полезно, когда ShaderEffectSource прикреплён поверх и предназначен для замены источникЭлемента.

живой : bool

Если это свойство имеет значение true, текстура обновляется всякий раз, когда источникЭлемента обновляется. В противном случае это будет замороженное изображение, даже если источникЭлемента присвоен новый элемент. Свойство имеет значение true по умолчанию.

mipmap : bool

Если это свойство имеет значение true, генерируются mipmap для текстуры.

Примечание: Некоторые реализации OpenGL ES 2 не поддерживают mipmap нестепеней-двух текстур.

рекурсивный : bool

Установите это свойство в true, если у ShaderEffectSource есть зависимость от себя. ShaderEffectSource образуют цепочку зависимостей, где один ShaderEffectSource может быть частью источникЭлемента другого. Если в этой цепочке есть цикл, ShaderEffectSource может пытаться отрисовать в ту же текстуру, которую он использует как источник, что запрещено OpenGL. Когда это свойство установлено в true, выделяется дополнительная текстура, чтобы ShaderEffectSource мог сохранить копию текстуры из предыдущего кадра. Затем он может отрисовывать в одну текстуру и использовать текстуру из предыдущего кадра как источник.

Установка и этого свойства, и живой в true приведет к непрерывной отрисовке дерева сцены. Поскольку ShaderEffectSource зависит от самого себя, обновление его означает, что он сразу же становится грязным снова.

образцы : int

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

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

Установка значения в 2, 4 и т. д. позволяет запросить многообразную выборку только для части сцены без включения многообразной выборки для всей сцены. Таким образом, многообразная выборка применяется только к заданному поддереву, что может привести к значительным приростам производительности, так как многообразная выборка не применяется к другим частям сцены.

Примечание: Включение многообразной выборки может быть потенциально дорогостоящим независимо от размера слоя, так как это влечёт за собой зависимость от аппаратного обеспечения и драйвера с точки зрения производительности и стоимости памяти.

Примечание: Это свойство функционально только при наличии поддержки многообразных renderbuffers и фреймбуферных блинтов. В противном случае значение игнорируется.

Это свойство было добавлено в Qt 5.10.

источникЭлемента : Item

Это свойство содержит элемент, который нужно отобразить в текстуре. Установка его в null при живой значении true, высвободит ресурсы текстуры.

областьИсточник : прямоугольник

Это свойство определяет прямоугольную область источникЭлемента, которую нужно отобразить в текстуре. Прямоугольник источника может быть больше, чем сам источникЭлемента. Если прямоугольник равен null, что является значением по умолчанию, то весь источникЭлемента отображается в текстуре.

отражениеТекстуры : перечисление

Данное свойство определяет, как должна быть зеркально отображена сгенерированная текстура OpenGL. Значение по умолчанию — ShaderEffectSource.MirrorVertically. Настройка зеркалирования может быть полезна, если сгенерированная текстура напрямую используется пользовательскими шейдерами, такими как те, что определены в ShaderEffect. Зеркалирование не влияет на отображение элемента ShaderEffectSource в пользовательском интерфейсе.

  • ShaderEffectSource.NoMirroring - Отсутствует зеркалирование
  • ShaderEffectSource.MirrorHorizontally - Сгенерированная текстура отображается зеркально по оси X.
  • ShaderEffectSource.MirrorVertically - Сгенерированная текстура отображается зеркально по оси Y.

Это свойство было добавлено в Qt 5.6.

textureSize : размер

Это свойство содержит запрашиваемый размер текстуры. Если оно пустое (значение по умолчанию), используется размер исходного прямоугольника.

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

wrapMode : перечисление

Это свойство определяет режимы обрезки OpenGL, связанные с текстурой. Изменение этого свойства наиболее уместно, когда элемент используется в качестве исходной текстуры для ShaderEffect.

Значение по умолчанию — ShaderEffectSource.ClampToEdge.

  • ShaderEffectSource.ClampToEdge - GL_CLAMP_TO_EDGE по горизонтали и вертикали
  • ShaderEffectSource.RepeatHorizontally - GL_REPEAT по горизонтали, GL_CLAMP_TO_EDGE по вертикали
  • ShaderEffectSource.RepeatVertically - GL_CLAMP_TO_EDGE по горизонтали, GL_REPEAT по вертикали
  • ShaderEffectSource.Repeat - GL_REPEAT по горизонтали и вертикали

Примечание: Некоторые реализации OpenGL ES 2 не поддерживают режим обрезки GL_REPEAT для текстур, не являющихся степенями двойки.

Документация по методам

scheduleUpdate()

Планирует повторную отрисовку текстуры в следующем кадре. Используйте это для обновления текстуры, когда live имеет значение false.

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

Spec-Zone.ru

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