Auf dieser Seite

Qt3DRender::QMaterial Class

class Qt3DRender::QMaterial

Stellt eine abstrakte Klasse bereit, die als Basis für alle Materialkomponentenklassen in einer Szene dienen soll. Mehr...

Diese Klasse ist veraltet. Wir raten dringend davon ab, sie in neuem Code zu verwenden.

Eigenschaften

  • effect : Qt3DRender::QEffect*

Öffentliche Funktionen

void addParameter(Qt3DRender::QParameter *parameter)
Qt3DRender::QEffect *effect() const
QList<Qt3DRender::QParameter *> parameters() const
void removeParameter(Qt3DRender::QParameter *parameter)

Öffentliche Slots

void setEffect(Qt3DRender::QEffect *effect)

Signale

void effectChanged(Qt3DRender::QEffect *effect)

Ausführliche Beschreibung

QMaterial bietet eine Möglichkeit, die Darstellung eines „ entity “ festzulegen. Jeder Aspekt kann eine eigene Unterklasse von QMaterial definieren, sodass ein Material zur Beschreibung eines visuellen Elements verwendet werden kann; beispielsweise die Art und Weise, wie Schall von einem Element reflektiert werden soll, die Temperatur einer Oberfläche und so weiter.

An sich führt ein QMaterial keine Aktion aus. Erst wenn es auf einen „ QEffect “-Knoten verweist, wird ein QMaterial nützlich.

In der Praxis kommt es häufig vor, dass ein einzelnes „ QEffect “ von mehreren QMaterial-Komponenten referenziert wird. Dies ermöglicht es, Effekte, Techniken, Durchgänge und Shader nur einmal zu erstellen, während das Material durch Hinzufügen von „ QParameter “-Instanzen festgelegt werden kann.

Ein in einem QMaterial definierter „ QParameter “-Parameter überschreibt Parameter (mit demselben Namen), die in „ QEffect “, „ QTechnique “ und „ QRenderPass “ definiert sind, wird jedoch von Parametern in „ QRenderPassFilter “ und „ QTechniqueFilter “ überschrieben.

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)));

Siehe auch QEffect, QTechnique und QParameter.

Dokumentation zu den Eigenschaften

effect : Qt3DRender::QEffect*

Legt den Effekt fest, der für das Material verwendet werden soll.

Zugriffsfunktionen:

Qt3DRender::QEffect *effect() const
void setEffect(Qt3DRender::QEffect *effect)

Benachrichtigungssignal:

void effectChanged(Qt3DRender::QEffect *effect)

Dokumentation der Mitgliedsfunktionen

void QMaterial::addParameter(Qt3DRender::QParameter *parameter)

Fügen Sie den Materialparametern einen „ parameter “ hinzu.

QList<Qt3DRender::QParameter *> QMaterial::parameters() const

Gibt einen Vektor mit den aktuellen Parametern des Materials zurück

void QMaterial::removeParameter(Qt3DRender::QParameter *parameter)

Entfernen Sie „ parameter “ aus den Materialparametern.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.