Класс 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, чтобы материал мог использоваться для описания визуального элемента; например, способ отражения звука от элемента, температура поверхности и так далее.
Сам по себе QMaterial ничего не делает. Он становится полезным только тогда, когда ссылается на узел QEffect.
На практике часто бывает, что один QEffect ссылается на несколько компонентов QMaterial. Это позволяет создавать эффект, методы, проходы и шейдеры только один раз, а также указывать материал путем добавления экземпляров QParameter.
QParameter, определенный в QMaterial, переопределяется QParameter (с тем же именем), определенным в QTechniqueFilter или QRenderPassFilter.
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.0/qt3drender-qmaterial.html