Spec-Zone.ru › Qt 5.6

Тип QML ShaderEffectSource

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

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

Item

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

Свойства

  • format : перечисление
  • hideSource : bool
  • live : bool
  • mipmap : bool
  • recursive : bool
  • sourceItem : Item
  • sourceRect : прямоугольник
  • textureMirroring : перечисление
  • textureSize : размер
  • wrapMode : перечисление

Методы

  • scheduleUpdate()

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

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

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 не перенаправляет никакой ввод мыши или клавиатуры на sourceItem. Если вы скрываете sourceItem, установив visible в false или opacity в ноль, он больше не будет реагировать на ввод. В случаях, когда ShaderEffectSource предназначен для замены sourceItem, обычно нужно скрыть sourceItem, но при этом обрабатывать ввод. Для этого можно использовать свойство hideSource.

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

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

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

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

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

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

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

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

hideSource : bool

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

live : bool

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

mipmap : bool

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

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

recursive : bool

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

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

sourceItem : Item

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

sourceRect : прямоугольник

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

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

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

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

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

textureSize : размер

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

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

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

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

  • 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/archives/qt-5.6/qml-qtquick-shadereffectsource.html

Spec-Zone.ru

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