Qt3DRender::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 | nameChanged(const QString &name) |
void | valueChanged(const QVariant &value) |
详细说明
QParameter 可以被QRenderPass,QTechnique,QEffect,QMaterial,QTechniqueFilter,QRenderPassFilter 引用。在运行时,如果着色器包含名称与 QParameter 匹配的 uniform,那么 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 封装的值确实能转换为真正的统一值。如果实际着色器 uniform 是 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 值应设置为与着色器统一采样器类型相匹配的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 name 和value 构造一个新的 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.