Sur cette page

Qt3DRender::QParameter Class

class Qt3DRender::QParameter

Fournit un espace de stockage pour une paire nom/valeur. Cela correspond à un uniforme de nuanceur. Plus...

En-tête : #include <Qt3DRender/QParameter>
CMake : find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake : QT += 3drender
En QML : Parameter
Hérite : Qt3DCore::QNode
Statut : Déclassé

Propriétés

Fonctions publiques

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

Emplacements publics

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

Signaux

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

Description détaillée

Un QParameter peut être référencé par un QRenderPass, QTechnique, QEffect, QMaterial, QTechniqueFilter, QRenderPassFilter. Au moment de l'exécution, en fonction du shader sélectionné pour une étape donnée du rendu, la valeur contenue dans un QParameter sera convertie et téléchargée si le shader contient un uniforme dont le nom correspond à celui du QParameter.

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;

Remarque : il convient de veiller à ce que la valeur contenue dans un QParameter soit effectivement convertie en fonction des attentes de l'uniforme réel. Donner une valeur stockée sous la forme d'un int alors que l'uniforme du shader est de type float pourrait entraîner des comportements indéfinis.

Note : lorsque l'uniforme ciblé est un tableau, le nom doit être le nom de l'uniforme avec [0] ajouté.

Note : le noeud QParameter ne peut pas être désactivé.

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

En ce qui concerne la prise en charge des textures, la valeur QParameter doit être définie sur la sous-classe QAbstractTexture appropriée qui correspond au type d'échantillonneur de l'uniforme du shader.

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

Voir également QAbstractTexture.

Documentation sur les propriétés

name : QString

Spécifie le nom du paramètre

Fonctions d'accès :

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

Signal de notification :

void nameChanged(const QString &name)

value : QVariant

Spécifie la valeur du paramètre

Fonctions d'accès :

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

Signal du notificateur :

void valueChanged(const QVariant &value)

Member Function Documentation

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

Construit un nouveau QParameter avec la valeur spécifiée parent.

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

Construit un nouveau QParameter avec la valeur spécifiée parent name et prend sa valeur dans texture.

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

Construit un nouveau QParameter avec les parent name et value spécifiés.

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