QMaterial#

提供一个抽象类,该类应为场景中所有材质组件类的基类。 更多

Inheritance diagram of PySide6.Qt3DRender.Qt3DRender.QMaterial

继承自: QTextureMaterial, QPhongMaterial, QPhongAlphaMaterial, QPerVertexColorMaterial, QNormalDiffuseSpecularMapMaterial, QNormalDiffuseMapMaterial, QNormalDiffuseMapAlphaMaterial, QMorphPhongMaterial, QMetalRoughMaterial, QGoochMaterial, QDiffuseSpecularMaterial, QDiffuseSpecularMapMaterial, QDiffuseMapMaterial

概述#

属性#

方法#

#

信号#

注意

本文档可能包含自动从C++翻译成Python的代码片段。我们始终欢迎对该片段翻译的贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单来告知我们

详细描述#

QMaterial 提供了一种指定 实体 渲染的方式。任何方面都可以定义自己 QMaterial 的子类,以便材料可以用来描述视觉元素;例如,声音应该如何从元素上反射,表面温度,等等。

本身,QMaterial 并不执行任何事情。只有当它引用了 QEffect 节点时,QMaterial 才变得有用。

在实际情况中,单一 QEffect 经常被多个 QMaterial 组件所引用。这样可以一次只创建效果、技术、过程和着色器,同时可以通过添加 QParameter 实例来指定材料。

QMaterial 上定义的 QParameter 覆盖了在 QEffectQTechniqueQRenderPass 中定义的相同名称的参数,但被 QRenderPassFilterQTechniqueFilter 中的参数覆盖。

QMaterial *material1 = new QMaterial();
QMaterial *material2 = new QMaterial();

// Create effect, technique, render pass and shader
QEffect *effect = new QEffect();
QTechnique *gl3Technique = new QTechnique();
QRenderPass *gl3Pass = new QRenderPass();
QShaderProgram *glShader = new QShaderProgram();

// Set the shader on the render pass
gl3Pass->setShaderProgram(glShader);

// Add the pass to the technique
gl3Technique->addRenderPass(gl3Pass);

// Set the targeted GL version for the technique
gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
gl3Technique->graphicsApiFilter()->setMajorVersion(3);
gl3Technique->graphicsApiFilter()->setMinorVersion(1);
gl3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);

// Add the technique to the effect
effect->addTechnique(gl3Technique);

// Set the effect on the materials
material1->setEffect(effect);
material2->setEffect(effect);

// Set different parameters on the materials
const QString parameterName = QStringLiteral("color");
material1->addParameter(new QParameter(parameterName, QColor::fromRgbF(0.0f, 1.0f, 0.0f, 1.0f)));
material2->addParameter(new QParameter(parameterName, QColor::fromRgbF(1.0f, 1.0f, 1.0f, 1.0f)));

另请参阅

QEffect QTechnique QParameter

注意

当使用 from __feature__ import true_property 时,可以直接使用属性,否则通过访问函数使用。

property effectᅟ: QEffect#

指定与材料一起使用的效果。

访问函数
__init__([parent=None])#
参数:

parentQNode

addParameter(parameter)#
参数:

parameterQParameter

将一个参数添加到材料的参数中。

effect()#
返回类型:

QEffect

另请参阅

setEffect()

属性 QMaterial.effect 的获取器。

effectChanged(effect)#
参数:

effectQEffect

属性 QMaterial.effect 的通知信号。

parameters()#
返回类型:

. Qt3DRender.QParameter 的列表

返回材料当前参数的向量

removeParameter(parameter)#
参数:

parameterQParameter

从材料的参数中移除一个 parameter

setEffect(effect)#
参数:

effectQEffect

另请参阅

effect()

属性 QMaterial.effect 的设置器。