QParameter Class

class Qt3DRender ::QParameter

Provides storage for a name and value pair. This maps to a shader uniform. 更多...

头: #include <Qt3DRender/QParameter>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 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)
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 )

详细描述

A QParameter can be referenced by a QRenderPass , QTechnique , QEffect , QMaterial , QTechniqueFilter , QRenderPassFilter . At runtime, depending on which shader is selected for a given step of the rendering, the value contained in a QParameter will be converted and uploaded if the shader contains a uniform with a name matching that of the 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;
					

注意: some care must be taken to ensure the value wrapped by a QParameter can actually be converted to what the real uniform expect. Giving a value stored as an int where the actual shader uniform is of type float could result in undefined behaviors.

注意: when the targeted uniform is an array, the name should be the name of the uniform with [0] appended to it.

注意: QParameter node can not be disabled.

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

When it comes to texture support, the QParameter value should be set to the appropriate QAbstractTexture subclass that matches the sampler type of the shader uniform.

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

Specifies the name of the parameter

访问函数:

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

通知程序信号:

void nameChanged (const QString & name )

value : QVariant

Specifies the value of the parameter

访问函数:

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

通知程序信号:

void valueChanged (const QVariant & value )

成员函数文档编制

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

Constructs a new QParameter with the specified parent .

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

Constructs a new QParameter with the specified parent name and value .

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

Constructs a new QParameter with the specified parent name and takes its value from texture .