QMaterial Class

class Qt3DRender ::QMaterial

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

頭: #include <QMaterial>
qmake: QT += 3drender
Since: Qt 5.5
實例化: Material
繼承: Qt3DCore::QComponent
繼承者:
12 types

Qt3DExtras::QDiffuseMapMaterial , Qt3DExtras::QDiffuseSpecularMapMaterial , Qt3DExtras::QDiffuseSpecularMaterial , Qt3DExtras::QGoochMaterial , Qt3DExtras::QMetalRoughMaterial , Qt3DExtras::QMorphPhongMaterial , Qt3DExtras::QNormalDiffuseMapMaterial , Qt3DExtras::QNormalDiffuseSpecularMapMaterial , Qt3DExtras::QPerVertexColorMaterial , Qt3DExtras::QPhongAlphaMaterial , Qt3DExtras::QPhongMaterial ,和 Qt3DExtras::QTextureMaterial

該類在 Qt 5.5 引入。

特性

公共函數

void addParameter (Qt3DRender::QParameter * parameter )
Qt3DRender::QEffect * effect () const
QVector<Qt3DRender::QParameter *> 參數 () const
void removeParameter (Qt3DRender::QParameter * parameter )

公共槽

void setEffect (Qt3DRender::QEffect * effect )

信號

void effectChanged (Qt3DRender::QEffect * effect )

詳細描述

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 overrides parameter (of the same name) defined in a QEffect , QTechnique and QRenderPass , but are overridden by parameter in QRenderPassFilter and QTechniqueFilter .

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 .

特性文檔編製

effect : Qt3DRender::QEffect *

Specifies the effect to be used with the material.

訪問函數:

Qt3DRender::QEffect * effect () const
void setEffect (Qt3DRender::QEffect * effect )

通知程序信號:

void effectChanged (Qt3DRender::QEffect * effect )

成員函數文檔編製

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

添加 parameter to the material's parameters.

QVector < Qt3DRender::QParameter *> QMaterial:: 參數 () const

Returns a vector of the material's current parameters

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

Remove a parameter from the material's parameters.