Spec-Zone.ru › Qt 6.1

Класс 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, переопределяет параметр (с тем же именем), определенный в 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.1/qt3drender-qmaterial.html

Spec-Zone.ru

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