Spec-Zone.ru › Qt 5.9

Класс QSGMaterial

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

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

QSGFlatColorMaterial, QSGOpaqueTextureMaterial, QSGSimpleMaterial и QSGVertexColorMaterial

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

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

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

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

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

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

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

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::FlagФлаги QSGMaterial::Flags

Постоянная Значение Описание
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 является типом-синонимом для 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/qt-5.9/qsgmaterial.html

Spec-Zone.ru

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