Spec-Zone.ru › Qt 6.0

Класс QSGMaterial

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

Заголовок: #include <QSGMaterial>
CMake: find_package(Qt6 COMPONENTS Quick REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Наследуется от:

QSGFlatColorMaterial, QSGOpaqueTextureMaterial и QSGVertexColorMaterial

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

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

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

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

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

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

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

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

Минимальная реализация QSGMaterial может выглядеть так:

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

См. пример Настраиваемый материал для ознакомления с реализацией подкласса QQuickItem, поддерживаемого узлом QSGGeometryNode и настраиваемым материалом.

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

См. также QSGMaterialShader, Узел сцены — Настраиваемый материал, Узел сцены — Два поставщика текстур и Узел сцены — Граф.

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

перечисление 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::сравнить(const QSGMaterial *other) const

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

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

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

[pure virtual] QSGMaterialShader *QSGMaterial::создатьШейдер(QSGRendererInterface::RenderMode renderMode) const

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

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

Для большинства материалов renderMode можно игнорировать. Некоторым материалам может потребоваться специальная обработка для определенных режимов отрисовки. Например, если материал реализует сглаживание таким образом, что ему необходимо учитывать преобразования перспективы, когда используется RenderMode3D.

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

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

void QSGMaterial::установитьФлаг(QSGMaterial::Флаги flags, bool on = true)

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

[pure virtual] QSGMaterialType *QSGMaterial::тип() const

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

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

Spec-Zone.ru

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