QParameter类

class Qt3DRender::QParameter

提供对名称和值对的存储。这映射到着色器均匀量。更多信息...

头文件 #include <Qt3DRender/QParameter>
CMakefind_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmakeQT += 3drender
参数
继承自 Qt3DCore::QNode

属性

公有函数

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

公有槽

voidsetName(const QString &name)
voidsetValue(const QVariant &dv)

信号

voidnameChanged(const QString &name)
voidvalueChanged(const QVariant &value)

详细描述

QParameter可以被QRenderPassQTechniqueQEffectQMaterialQTechniqueFilterQRenderPassFilter引用。在运行时,根据渲染步骤选择的着色器,如果包含与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值可能会产生不确定的行为。

注意:当目标均匀量为数组时,名称应为带有[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的值应设置为与着色器 uniforms 的采样器类型匹配的相应 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

指定参数的名称

访问函数

QStringname() const
voidsetName(const QString &name)

通知信号

voidnameChanged(const QString &name)

value : QVariant

指定参数的值

访问函数

QVariantvalue() const
voidsetValue(const QVariant &dv)

通知信号

voidvalueChanged(const QVariant &value)

成员函数文档

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

使用指定的 parent 构造一个新的 QParameter。

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

使用指定的 parentnamevalue 构造一个新的 QParameter。

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

使用指定的 parentname 和从 texture 中取值来构造一个新的 QParameter。

© 2024 Qt 公司有限公司。本文件中包含的文档贡献是各自所有者的版权。本文件中的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。