PySide6.Qt3DRender.Qt3DRender.QMaterial

class QMaterial

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

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 提供了一种指定 entity 渲染方式的方法。任何方面都可以定义自己的 QMaterial 子类,以便 Material 可以用来描述一个视觉元素;例如,声音应该如何反射一个元素,表面的温度等等。

本身,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

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

Access functions:
__init__([parent=None])
Parameters:

parentQNode

addParameter(parameter)
Parameters:

参数QParameter

向材料的参数中添加一个parameter

effect()
Return type:

QEffect

另请参阅

setEffect()

属性 effectᅟ 的获取器。

effectChanged(effect)
Parameters:

效果QEffect

属性 effectᅟ 的通知信号。

parameters()
Return type:

Qt3DRender.QParameter的列表

返回材料当前参数的向量

removeParameter(parameter)
Parameters:

参数QParameter

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

setEffect(effect)
Parameters:

效果QEffect

另请参阅

effect()

属性 effectᅟ 的设置器。