Класс QMaterial
класс Qt3DRender::QMaterialПредоставляет абстрактный класс, который должен быть основой всех классов компонентов материала в сцене. Подробнее...
| Заголовок: | #include <QMaterial> |
| CMake: | find_package(Qt6 COMPONENTS 3drender REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| С момента: | Qt 5.5 |
| Инициализируется: | Material |
| Наследует: | Qt3DCore::QComponent |
| Наследуется: | Qt3DExtras::QDiffuseMapMaterial, Qt3DExtras::QDiffuseSpecularMapMaterial, Qt3DExtras::QDiffuseSpecularMaterial, Qt3DExtras::QGoochMaterial, Qt3DExtras::QMetalRoughMaterial, Qt3DExtras::QMorphPhongMaterial, Qt3DExtras::QNormalDiffuseMapMaterial, Qt3DExtras::QNormalDiffuseSpecularMapMaterial, Qt3DExtras::QPerVertexColorMaterial, Qt3DExtras::QPhongAlphaMaterial, Qt3DExtras::QPhongMaterial и Qt3DExtras::QTextureMaterial |
Свойства
- effect : Qt3DRender::QEffect*
Открытые функции
| void | addParameter(Qt3DRender::QParameter *parameter) |
| Qt3DRender::QEffect * | effect() const |
| QList<Qt3DRender::QParameter *> | parameters() const |
| void | removeParameter(Qt3DRender::QParameter *parameter) |
Открытые слоты
| void | setEffect(Qt3DRender::QEffect *effect) |
Сигналы
| void | effectChanged(Qt3DRender::QEffect *effect) |
Подробное описание
QMaterial предоставляет способ определения отрисовки сущности. Любой аспект может определить свой подкласс QMaterial, чтобы Material можно было использовать для описания визуального элемента; например, способ, которым звук должен отражаться от элемента, температура поверхности и так далее.
Сам по себе QMaterial ничего не делает. Он становится полезным только тогда, когда ссылается на узел QEffect.
На практике часто бывает так, что один QEffect ссылается на несколько компонентов QMaterial. Это позволяет создать эффект, методы, проходы и шейдеры только один раз, при этом позволяя определить материал путем добавления экземпляров QParameter.
QParameter, определённый в QMaterial, переопределяет параметр (с тем же именем), определённый в QEffect, QTechnique и QRenderPass, но переопределяется параметром в QRenderPassFilter и QTechniqueFilter.
QMaterial *material1 = new QMaterial();
QMaterial *material2 = new QMaterial();
// Create effect, technique, render pass and shader
QEffect *effect = new QEffect();
QTechnique *gl3Technique = new QTechnique();
QRenderPass *gl3Pass = new QRenderPass();
QShaderProgram *glShader = new QShaderProgram();
// Set the shader on the render pass
gl3Pass->setShaderProgram(glShader);
// Add the pass to the technique
gl3Technique->addRenderPass(gl3Pass);
// Set the targeted GL version for the technique
gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
gl3Technique->graphicsApiFilter()->setMajorVersion(3);
gl3Technique->graphicsApiFilter()->setMinorVersion(1);
gl3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);
// Add the technique to the effect
effect->addTechnique(gl3Technique);
// Set the effect on the materials
material1->setEffect(effect);
material2->setEffect(effect);
// Set different parameters on the materials
const QString parameterName = QStringLiteral("color");
material1->addParameter(new QParameter(parameterName, QColor::fromRgbF(0.0f, 1.0f, 0.0f, 1.0f);
material2->addParameter(new QParameter(parameterName, QColor::fromRgbF(1.0f, 1.0f, 1.0f, 1.0f); См. также QEffect, QTechnique и QParameter.
Документация по свойству
effect : Qt3DRender::QEffect*
Указывает эффект, который будет использоваться с материалом.
Функции доступа:
| Qt3DRender::QEffect * | effect() const |
| void | setEffect(Qt3DRender::QEffect *effect) |
Сигнал уведомления:
| void | effectChanged(Qt3DRender::QEffect *effect) |
Документация по функциям-членам
void QMaterial::addParameter(Qt3DRender::QParameter *parameter)
Добавить parameter в параметры материала.
QList<Qt3DRender::QParameter *> QMaterial::parameters() const
Возвращает вектор текущих параметров материала.
void QMaterial::removeParameter(Qt3DRender::QParameter *parameter)
Удалить parameter из параметров материала.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qt3drender-qmaterial.html