Класс QSGMaterial
Класс QSGMaterial инкапсулирует состояние отрисовки для программы шейдеров. Подробнее...
| Заголовок: | #include <QSGMaterial> |
| qmake: | QT += quick |
| Наследуется от: | QSGFlatColorMaterial, QSGOpaqueTextureMaterial, QSGSimpleMaterial и QSGVertexColorMaterial |
Открытые типы
| перечисление | Flag { Blending, RequiresDeterminant, RequiresFullMatrixExceptTranslate, RequiresFullMatrix, CustomCompileStep } |
| флаги | 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/qt-5.12/qsgmaterial.html