QMaterial 类
class Qt3DRender::QMaterial头文件 | #include <QMaterial> |
CMake | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake | QT += 3drender |
实例化 | 材质 |
继承自 | 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 提供了一种指定渲染实体的方法。任何方面都可以定义 QMaterial 的自己的子类,以便 Material 可以用来描述一个可视化元素;例如,声音应该如何 reflect off 一个元素,表面的温度,等等。
本身,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) |
通知信号
void | effectChanged(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公司(芬兰)及/或其他国家的商标。所有其他商标均为各自所有者的财产。