Qt3DRender::QMaterial Class
class Qt3DRender::QMaterial提供一个抽象类,作为场景中所有材质组件类的基础。更多
头文件: | #include <QMaterial> |
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 就可以用来描述视觉元素;例如,声音在元素上的反射方式、表面的温度等等。
QMaterial 本身并不做任何事情。只有当它引用QEffect 节点时,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) |
Notifier 信号:
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 。
© 2025 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.