内容表

上一话题

Qt3DRender.QPaintedTextureImage

下一话题

Qt3DRender.QPickEvent

Qt3DRender.QParameter

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

Inheritance diagram of PySide2.Qt3DRender.Qt3DRender.QParameter

概要

函数

信号

详细描述

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

class PySide2.Qt3DRender.Qt3DRender. QParameter ( [ parent=None ] )

PySide2.Qt3DRender.Qt3DRender.QParameter(name, texture[, parent=None])

PySide2.Qt3DRender.Qt3DRender.QParameter(name, value[, parent=None])

param parent

QNode

param name

unicode

param texture

QAbstractTexture

param value

object

构造新 QParameter with the specified parent .

PySide2.Qt3DRender.Qt3DRender.QParameter. name ( )
返回类型

unicode

另请参阅

setName()

PySide2.Qt3DRender.Qt3DRender.QParameter. nameChanged ( name )
参数

name – unicode

PySide2.Qt3DRender.Qt3DRender.QParameter. setName ( name )
参数

name – unicode

另请参阅

name()

PySide2.Qt3DRender.Qt3DRender.QParameter. setValue ( dv )
参数

dv – object

另请参阅

value()

PySide2.Qt3DRender.Qt3DRender.QParameter. value ( )
返回类型

object

另请参阅

setValue()

PySide2.Qt3DRender.Qt3DRender.QParameter. valueChanged ( value )
参数

value – object