Qt3DRender::QMaterial Class
class Qt3DRender::QMaterial提供了一个抽象类,该类应作为场景中所有材质组件类的基类。更多内容...
| 头文件: | #include <qmaterial.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| 在 QML 中: | Material |
| 继承自: | Qt3DCore::QComponent |
| 被继承自: | 12 种类型Qt3DExtras::QDiffuseMapMaterial、Qt3DExtras::QDiffuseSpecularMapMaterial 、Qt3DExtras::QDiffuseSpecularMaterial 、Qt3DExtras::QGoochMaterial 、Qt3DExtras::QMetalRoughMaterial 、Qt3DExtras::QMorphPhongMaterial 、Qt3DExtras::QNormalDiffuseMapMaterial 、Qt3DExtras::QNormalDiffuseSpecularMapMaterial 、Qt3DExtras::QPerVertexColorMaterial 、Qt3DExtras::QPhongAlphaMaterial 、Qt3DExtras::QPhongMaterial ,以及Qt3DExtras::QTextureMaterial |
| 状态: | 已弃用 |
该类已弃用。我们强烈建议不要在新代码中使用它。
属性
- effect : Qt3DRender::QEffect*
公共函数
| void | addParameter(Qt3DRender::QParameter *parameter) |
| Qt3DRender::QEffect * | effect() const |
| QList<Qt3DRender::QParameter *> | parameters() const |
| void | removeParameter(Qt3DRender::QParameter *parameter) |
公共槽
| void | setEffect(Qt3DRender::QEffect *effect) |
信号
| void | effectChanged(Qt3DRender::QEffect *effect) |
详细说明
QMaterial 提供了一种指定entity 渲染方式的机制。任何方面都可以定义自己的 QMaterial 子类,从而利用 Material 来描述视觉元素;例如,声音在元素上的反射方式、表面的温度等等。
QEffect QMaterial 本身并不执行任何操作。只有当它引用一个 QMaterialObject 节点时,QMaterial 才变得有用。
实际上,经常会出现一个QEffect 被多个QMaterial组件引用的情况。这使得效果、技术、通道和着色器只需创建一次,同时可以通过添加QParameter 实例来指定材质。
在 QMaterial 上定义的QParameter 会覆盖QEffect 、QTechnique 和QRenderPass 中定义的(同名)参数,但会被QRenderPassFilter 和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*
指定要与该材质配合使用的效果。
访问函数:
| Qt3DRender::QEffect * | effect() const |
| void | setEffect(Qt3DRender::QEffect *effect) |
通知信号:
| void | effectChanged(Qt3DRender::QEffect *effect) |
成员函数文档
void QMaterial::addParameter(Qt3DRender::QParameter *parameter)
在材质的参数中添加一个“parameter ”。
QList<Qt3DRender::QParameter *> QMaterial::parameters() const
返回一个包含材质当前参数的向量
void QMaterial::removeParameter(Qt3DRender::QParameter *parameter)
从材质的参数中移除parameter 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.