Класс 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(QSGMaterial::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(QSGMaterial::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.11/qsgmaterial.html