QMaterial 类

class Qt3DRender::QMaterial

提供抽象类,应为场景中所有材质组件类的基类。详情...

属性

  • effect : Qt3DRender::QEffect*

公共函数

voidaddParameter(Qt3DRender::QParameter *parameter)
Qt3DRender::QEffect *effect() const
QList<Qt3DRender::QParameter *>parameters() const
voidremoveParameter(Qt3DRender::QParameter *parameter)

公共槽

voidsetEffect(Qt3DRender::QEffect *effect)

信号

voideffectChanged(Qt3DRender::QEffect *effect)

详细说明

QMaterial 提供了一种指定渲染实体的方法。任何方面都可以定义 QMaterial 的自己的子类,以便 Material 可以用来描述一个可视化元素;例如,声音应该如何 reflect off 一个元素,表面的温度,等等。

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

另请参阅QEffectQTechniqueQParameter

属性文档

effect : Qt3DRender::QEffect*

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

访问函数

Qt3DRender::QEffect *effect() const
voidsetEffect(Qt3DRender::QEffect *effect)

通知信号

voideffectChanged(Qt3DRender::QEffect *effect)

成员函数文档

void QMaterial::addParameter(Qt3DRender::QParameter *parameter)

参数添加到材料的参数中。

QList<Qt3DRender::QParameter *> QMaterial::parameters() const

返回当前材料参数的向量

void QMaterial::removeParameter(Qt3DRender::QParameter *parameter)

从材料的参数中删除参数

© 2024 Qt公司。在此提供的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的GNU自由文档许可1.3版许可的。Qt及其相关标志是Qt公司(芬兰)及/或其他国家的商标。所有其他商标均为各自所有者的财产。