本页内容

Qt3DRender::QEffect Class

class Qt3DRender::QEffect

Qt 3D 场景中效果的基类。更多内容...

头文件: #include <qeffect.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
在 QML 中: Effect
继承自: Qt3DCore::QNode
状态: 已弃用

该类已弃用。我们强烈建议不要在新代码中使用它。

公共函数

void addParameter(Qt3DRender::QParameter *parameter)
void addTechnique(Qt3DRender::QTechnique *t)
QList<Qt3DRender::QParameter *> parameters() const
void removeParameter(Qt3DRender::QParameter *parameter)
void removeTechnique(Qt3DRender::QTechnique *t)
QList<Qt3DRender::QTechnique *> techniques() const

详细说明

QEffect 类整合了一组技术及其所用的参数,用于为材质生成渲染效果。

在可能的情况下,一个 QEffect 实例应在多个QMaterial 实例之间共享。

注意:QEffect 节点无法被禁用。

QEffect *effect = new QEffect();

// Create technique, render pass and shader
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);

在 QEffect 上定义的QParameter 会覆盖在QTechnique 和QRenderPass 中定义的(同名)参数,但会被QRenderPassFilter 、QTechniqueFilter 和QMaterial 中的参数覆盖。

另请参阅 QMaterial 、QTechnique 和QParameter 。

成员函数文档

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

将parameter 添加到该特效中。它会向后端发送一个更新请求。parameter 将用于在该特效所使用的着色器中设置相应的uniform值。

void QEffect::addTechnique(Qt3DRender::QTechnique *t)

向该效果添加了一个新方法t 。该方法会向后端发送更新。

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

返回该效果所使用的参数列表。

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

从效果中移除参数parameter 。

void QEffect::removeTechnique(Qt3DRender::QTechnique *t)

从效果中移除一个名为“t ”的技能。

QList<Qt3DRender::QTechnique *> QEffect::techniques() const

返回该特效所使用的技术列表。

© 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.