内容表

上一话题

Qt3DRender.QLineWidth

下一话题

Qt3DRender.QMemoryBarrier

Qt3DRender.QMaterial

Provides an abstract class that should be the base of all material component classes in a scene. 更多

Inheritance diagram of PySide2.Qt3DRender.Qt3DRender.QMaterial

继承者: Qt3DExtras.QDiffuseMapMaterial , Qt3DExtras.QDiffuseSpecularMapMaterial , Qt3DExtras.QDiffuseSpecularMaterial , Qt3DExtras.QGoochMaterial , Qt3DExtras.QMetalRoughMaterial , Qt3DExtras.QMorphPhongMaterial , Qt3DExtras.QNormalDiffuseMapMaterial , Qt3DExtras.QNormalDiffuseSpecularMapMaterial , Qt3DExtras.QPerVertexColorMaterial , Qt3DExtras.QPhongAlphaMaterial , Qt3DExtras.QPhongMaterial , Qt3DExtras.QTextureMaterial

概要

函数

信号

详细描述

QMaterial provides a way to specify the rendering of an entity . Any aspect can define its own subclass of QMaterial so that a Material can be used to describe a visual element; for example, the way sound should reflect off an element, the temperature of a surface, and so on.

In itself, a QMaterial doesn’t do anything. It’s only when it references a QEffect node that a QMaterial becomes useful.

In practice, it often happens that a single QEffect is being referenced by several QMaterial components. This allows to only create the effect, techniques, passes and shaders once while allowing to specify the material by adding QParameter 实例。

A QParameter defined on a QMaterial is overridden by a QParameter (of the same name) defined in a QTechniqueFilter QRenderPassFilter .

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

class PySide2.Qt3DRender.Qt3DRender. QMaterial ( [ parent=None ] )
参数

parent QNode

PySide2.Qt3DRender.Qt3DRender.QMaterial. addParameter ( 参数 )
参数

参数 QParameter

Add a 参数 to the material’s parameters.

PySide2.Qt3DRender.Qt3DRender.QMaterial. effect ( )
返回类型

QEffect

另请参阅

setEffect()

PySide2.Qt3DRender.Qt3DRender.QMaterial. effectChanged ( effect )
参数

effect QEffect

PySide2.Qt3DRender.Qt3DRender.QMaterial. 参数 ( )
返回类型

Returns a vector of the material’s current parameters

PySide2.Qt3DRender.Qt3DRender.QMaterial. removeParameter ( 参数 )
参数

参数 QParameter

Remove a 参数 from the material’s parameters.

PySide2.Qt3DRender.Qt3DRender.QMaterial. setEffect ( effect )
参数

effect QEffect

另请参阅

effect()