QParameter Class

class Qt3DRender::QParameter

Bietet Speicherplatz für ein Paar aus Name und Wert. Dieses wird auf eine Shader-Uniform abgebildet. Mehr...

Kopfzeile: #include <Qt3DRender/QParameter>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
In QML: Parameter
Vererbt: Qt3DCore::QNode
Status: Veraltet

Eigenschaften

Öffentliche Funktionen

QParameter(Qt3DCore::QNode *parent = nullptr)
QParameter(const QString &name, Qt3DRender::QAbstractTexture *texture, Qt3DCore::QNode *parent = nullptr)
QParameter(const QString &name, const QVariant &value, Qt3DCore::QNode *parent = nullptr)
QString name() const
QVariant value() const

Öffentliche Slots

void setName(const QString &name)
void setValue(const QVariant &dv)

Signale

void nameChanged(const QString &name)
void valueChanged(const QVariant &value)

Detaillierte Beschreibung

Ein QParameter kann von einem QRenderPass, QTechnique, QEffect, QMaterial, QTechniqueFilter, QRenderPassFilter referenziert werden. Je nachdem, welcher Shader für einen bestimmten Rendering-Schritt ausgewählt wurde, wird der in einem QParameter enthaltene Wert zur Laufzeit konvertiert und hochgeladen, wenn der Shader eine Uniform mit einem Namen enthält, der mit dem des QParameters übereinstimmt.

QParameter *param = new QParameter();
param->setName(QStringLiteral("diffuseColor"));
param->setValue(QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Alternatively you can create and set a QParameter this way
QParameter *param2 = new QParameter(QStringLiteral("diffuseColor"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Such QParameters will work with the following GLSL uniform shader declarations
// uniform vec4 diffuseColor;
// uniform vec3 diffuseColor;
// uniform vec2 diffuseColor;
// uniform float diffuseColor;

Hinweis: Es muss sichergestellt werden, dass der in einem QParameter enthaltene Wert tatsächlich in das konvertiert werden kann, was die tatsächliche Uniform erwartet. Die Angabe eines als int gespeicherten Wertes, wenn die tatsächliche Shader-Uniform vom Typ float ist, könnte zu undefiniertem Verhalten führen.

Hinweis: Wenn die Ziel-Uniform ein Array ist, sollte der Name der Name der Uniform mit angehängter [0] sein.

Hinweis: Der QParameter-Knoten kann nicht deaktiviert werden.

QParameter *param = new QParameter();
QVariantList values = QVariantList() << 0.0f << 1.0f << 2.0f << 3.0f << 4.0f << 883.0f << 1340.0f << 1584.0f;

param->setName(QStringLiteral("diffuseValues[0]"));
param->setValue(values);

// Matching GLSL shader uniform  declaration
// uniform float diffuseValues[8];

Wenn es um Texturunterstützung geht, sollte der QParameter-Wert auf die entsprechende QAbstractTexture Unterklasse gesetzt werden, die dem Sampler-Typ der Shader-Uniform entspricht.

QTexture2D *texture = new QTexture2D();
...
QParameter *param = new QParameter();
param->setName(QStringLiteral("diffuseTexture"));
param->setValue(QVariant::fromValue(texture));

// Works with the following GLSL uniform shader declaration
// uniform sampler2D diffuseTexture

Siehe auch QAbstractTexture.

Dokumentation der Eigenschaft

name : QString

Gibt den Namen des Parameters an

Zugriffsfunktionen:

QString name() const
void setName(const QString &name)

Meldendes Signal:

void nameChanged(const QString &name)

value : QVariant

Gibt den Wert des Parameters an

Zugriffsfunktionen:

QVariant value() const
void setValue(const QVariant &dv)

Benachrichtigungssignal:

void valueChanged(const QVariant &value)

Mitgliederfunktion Dokumentation

[explicit] QParameter::QParameter(Qt3DCore::QNode *parent = nullptr)

Konstruiert einen neuen QParameter mit dem angegebenen parent.

[explicit] QParameter::QParameter(const QString &name, Qt3DRender::QAbstractTexture *texture, Qt3DCore::QNode *parent = nullptr)

Konstruiert einen neuen QParameter mit dem angegebenen parent name und übernimmt dessen Wert von texture.

[explicit] QParameter::QParameter(const QString &name, const QVariant &value, Qt3DCore::QNode *parent = nullptr)

Konstruiert einen neuen QParameter mit dem angegebenen parent name und value.

© 2025 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.