QParameter Class

class Qt3DRender::QParameter

名前と値のペアのストレージを提供します。これはシェーダーのユニフォームにマッピングされます。さらに...

ヘッダ: #include <Qt3DRender/QParameter>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake QT += 3drender
QML で Parameter
を継承しています: Qt3DCore::QNode
ステータス非推奨

プロパティ

パブリック機能

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

パブリックスロット

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

シグナル

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

詳細説明

QParameter はQRenderPass,QTechnique,QEffect,QMaterial,QTechniqueFilter,QRenderPassFilter で参照できます。実行時に、レンダリングの特定のステップでどのシェーダが選択されるかによっ て、QParameter に含まれる値は、そのシェーダに 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;

注意: QParameterによってラップされた値が、実際のユニフォームが期待するものに実際に変換できるように、いくつかの注意を払う必要があります。実際のシェーダユニフォームがfloat型である場合にint型として格納された値を与えると、未定義の動作になる可能性があります。

注意: 対象となるユニフォームが配列である場合、nameはユニフォームの名前に[0]を付加したものでなければなりません。

注意: QParameterノードを無効にすることはできません。

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

テクスチャサポートに関しては、QParameter値は、シェーダーユニフォームのサンプラータイプにマッチする適切なQAbstractTexture サブクラスに設定する必要があります。

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

QAbstractTextureも参照してください

プロパティのドキュメント

name : QString

パラメータ名を指定する

アクセス関数:

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

通知シグナル

void nameChanged(const QString &name)

value : QVariant

パラメータの値を指定する

アクセス機能

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

通知シグナル

void valueChanged(const QVariant &value)

メンバ関数ドキュメント

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

指定されたparent で新しい QParameter を構築します。

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

指定されたparent name で新しい QParameter を構築し、その値をtexture から取得します。

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

指定されたparent namevalue を持つ新しい QParameter を構築します。

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