Spec-Zone.ru › Qt

Класс 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

Spec-Zone.ru

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