Spec-Zone.ru › Qt 5.13

Класс QSGMaterial

Класс QSGMaterial инкапсулирует состояние отрисовки для программы шейдеров. Подробнее...

Заголовок: #include <QSGMaterial>
qmake: QT += quick
Наследуется от:

QSGFlatColorMaterial, QSGOpaqueTextureMaterial, QSGSimpleMaterial и QSGVertexColorMaterial

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

Открытые типы

Перечисление Флаг { Смешивание, ТребуетОпределитель, ТребуетПолнуюМатрицуКромеПеревода, ТребуетПолнуюМатрицу, ПользовательскийШагКомпиляции }
флаги Флаги

Открытые функции

виртуальный int compare(const QSGMaterial *other) const
виртуальный QSGMaterialShader * createShader() const = 0
QSGMaterial::Флаги flags() const
void setFlag(QSGMaterial::Флаги flags, bool on = true)
виртуальный QSGMaterialType * type() const = 0

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

API QSGMaterial очень низкого уровня. Более удобный API, который предоставляет почти все те же функции, доступен через QSGSimpleMaterialShader.

Подклассы QSGMaterial и QSGMaterialShader образуют тесную связь. Для одной сцены графика (включая вложенные графики) существует один уникальный экземпляр QSGMaterialShader, который инкапсулирует QOpenGLShaderProgram, используемый графиком сцены для отрисовки данного материала, например, шейдер для плоского заполнения геометрии. Каждый QSGGeometryNode может иметь уникальный QSGMaterial, содержащий информацию о том, как должен быть настроен шейдер при рисовании данного узла, например, фактический цвет для отрисовки геометрии.

У QSGMaterial есть две виртуальные функции, которые необходимо реализовать. Функция type() должна возвращать уникальный экземпляр для всех экземпляров определенного подкласса. Функция createShader() должна возвращать новый экземпляр QSGMaterialShader, специфичный для подкласса QSGMaterial.

Пример минимальной реализации QSGMaterial:

class Material : public QSGMaterial
{
public:
    QSGMaterialType *type() const { static QSGMaterialType type; return &type; }
    QSGMaterialShader *createShader() const { return new Shader; }
};

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

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

Перечисление QSGMaterial::ФлагФлаги QSGMaterial::Флаги

Константа Значение Описание
QSGMaterial::Blending 0x0001 Установите этот флаг в значение true, если материал требует включения GL_BLEND при отрисовке.
QSGMaterial::RequiresDeterminant 0x0002 Установите этот флаг в значение true, если материал зависит от определителя матрицы узлов геометрии для отрисовки.
QSGMaterial::RequiresFullMatrixExceptTranslate 0x0004 | RequiresDeterminant Установите этот флаг в значение true, если материал зависит от полной матрицы узлов геометрии для отрисовки, за исключением части трансляции.
QSGMaterial::RequiresFullMatrix 0x0008 | RequiresFullMatrixExceptTranslate Установите этот флаг в значение true, если материал зависит от полной матрицы узлов геометрии для отрисовки.
QSGMaterial::CustomCompileStep 0x0010 Начиная с Qt 5.2, график сцены не всегда будет вызывать QSGMaterialShader::compile() при компиляции и линковке программы шейдеров. Установите этот флаг для принудительного вызова функции.

Тип Флаги является типом-синонимом для QFlags<Флаг>. Он хранит логическое ИЛИ сочетание значений Флаг.

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

[virtual] int QSGMaterial::compare(const QSGMaterial *other) const

Сравнивает этот материал с other и возвращает 0, если они равны; -1, если этот материал должен быть отсортирован раньше other, и 1, если other должен быть отсортирован раньше.

График сцены может переупорядочивать узлы геометрии, чтобы свести к минимуму изменения состояния. Функция compare вызывается во время процесса сортировки, чтобы материалы можно было отсортировать, сводя к минимуму изменения состояния в каждом вызове QSGMaterialShader::updateState().

Указатель this и other гарантированно имеют одинаковый тип type().

[pure virtual] QSGMaterialShader *QSGMaterial::createShader() const

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

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

QSGMaterial::Флаги QSGMaterial::flags() const

Возвращает флаги материала.

void QSGMaterial::setFlag(QSGMaterial::Флаги flags, bool on = true)

Устанавливает флаги flags для этого материала, если on равно true; в противном случае очищает атрибут.

[pure virtual] QSGMaterialType *QSGMaterial::type() const

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

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

Spec-Zone.ru

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