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 .
Specifies the name of the parameter
访问函数:
QString | name () const |
void | setName (const QString & name ) |
通知程序信号:
void | nameChanged (const QString & name ) |
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 .