Spec-Zone.ru › Qt 5.6

Класс QSGMaterial

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

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

QSGFlatColorMaterial, QSGOpaqueTextureMaterial, QSGSimpleMaterial и QSGVertexColorMaterial

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

Типы публичного доступа

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

Функции публичного доступа

virtual int сравнить(const QSGMaterial *other) const
virtual QSGMaterialShader * создатьШейдер() const = 0
QSGMaterial::Флаги флаги() const
void установитьФлаг(Флаги flags, bool on = true)
virtual QSGMaterialType * тип() const = 0

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

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

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

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

Класс QSGMaterial имеет две виртуальные функции, которые необходимо реализовать. Функция тип() должна возвращать уникальный экземпляр для всех экземпляров конкретного подкласса. Функция создатьШейдер() должна возвращать новый экземпляр 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() при компиляции и компоновке программы шейдера. Установите этот флаг, чтобы гарантировать вызов функции.

Тип Flags — это typedef для QFlags<Flag>. Он хранит комбинацию значений Flag с использованием побитового ИЛИ.

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

[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::Flags QSGMaterial::flags() const

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

void QSGMaterial::setFlag(Flags 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/archives/qt-5.6/qsgmaterial.html

Spec-Zone.ru

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