Qt3DRender::QTechnique Class

class Qt3DRender::QTechnique

封装一个技术。更多

头文件: #include <QTechnique>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
在 QML 中: Technique
继承: Qt3DCore::QNode
状态:已废弃

属性

公共功能

void addFilterKey(Qt3DRender::QFilterKey *filterKey)
void addParameter(Qt3DRender::QParameter *parameter)
void addRenderPass(Qt3DRender::QRenderPass *pass)
QList<Qt3DRender::QFilterKey *> filterKeys() const
Qt3DRender::QGraphicsApiFilter *graphicsApiFilter()
const Qt3DRender::QGraphicsApiFilter *graphicsApiFilter() const
QList<Qt3DRender::QParameter *> parameters() const
void removeFilterKey(Qt3DRender::QFilterKey *filterKey)
void removeParameter(Qt3DRender::QParameter *parameter)
void removeRenderPass(Qt3DRender::QRenderPass *pass)
QList<Qt3DRender::QRenderPass *> renderPasses() const

详细说明

Qt3DRender::QTechnique 指定了一组Qt3DRender::QRenderPass 对象、Qt3DRender::QFilterKey 对象、Qt3DRender::QParameter 对象和Qt3DRender::QGraphicsApiFilter ,它们共同定义了给定图形 API 可以渲染的渲染技术。Qt3DRender::QTechniqueFilter 使用过滤键在 FrameGraph 的特定部分选择特定技术。定义在 QTechnique 上的QParameter 会覆盖QRenderPass 中定义的参数(同名),但会被QRenderPassFilterQTechniqueFilterQMaterialQEffect 中的参数覆盖。

在创建针对多个图形 API 版本的QEffect 时,最好创建多个 QTechnique 节点,每个节点的graphicsApiFilter 设置与目标 GL 版本之一相匹配。运行时,Qt3D 渲染器将根据支持的图形 API 版本以及(如果指定)满足 FrameGraph 中给定QTechniqueFilterQFilterKey 节点,选择最合适的 QTechnique。

注意: 当使用 OpenGL 作为渲染的图形 API 时,Qt3D 会依赖运行时QSurfaceFormat::defaultFormat() 返回的QSurfaceFormat 来决定最合适的可用 GL 版本。如果您需要自定义QSurfaceFormat ,请不要忘记使用QSurfaceFormat::setDefaultFormat() 来应用它。在视图上设置QSurfaceFormat 可能不会对与 Qt3D 相关的渲染产生影响。

注意: 不能禁用 QTechnique 节点。

QTechnique *gl3Technique = new QTechnique();

// Create the render passes
QRenderPass *firstPass = new QRenderPass();
QRenderPass *secondPass = new QRenderPass();

// Add the passes to the technique
gl3Technique->addRenderPass(firstPass);
gl3Technique->addRenderPass(secondPass);

// 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);

// Create a FilterKey
QFilterKey *filterKey = new QFilterKey();
filterKey->setName(QStringLiteral("name"));
fitlerKey->setValue(QStringLiteral("zFillPass"));

// Add the FilterKey to the Technique
gl3Technique->addFilterKey(filterKey);

// Create a QParameter
QParameter *colorParameter = new QParameter(QStringLiteral("color"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Add parameter to technique
gl3Technique->addParameter(colorParameter);

另请参阅 QEffect,QRenderPass, 和QTechniqueFilter

属性文档

[read-only] graphicsApiFilter : Qt3DRender::QGraphicsApiFilter* const

指定正在使用的图形 API 过滤器

访问函数:

Qt3DRender::QGraphicsApiFilter *graphicsApiFilter()
const Qt3DRender::QGraphicsApiFilter *graphicsApiFilter() const

成员函数文档

void QTechnique::addFilterKey(Qt3DRender::QFilterKey *filterKey)

Qt3DRender::QTechnique 本地过滤密钥中添加filterKey

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

在技术参数中添加parameter

void QTechnique::addRenderPass(Qt3DRender::QRenderPass *pass)

为技术添加pass

QList<Qt3DRender::QFilterKey *> QTechnique::filterKeys() const

返回构成Qt3DRender::QTechnique 过滤器键的 Qt3DCore::QFilterKey 键对象列表。

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

返回技术当前参数的向量

void QTechnique::removeFilterKey(Qt3DRender::QFilterKey *filterKey)

Qt3DRender::QTechnique 本地过滤键中删除filterKey

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

从技术参数中删除parameter

void QTechnique::removeRenderPass(Qt3DRender::QRenderPass *pass)

从技术中删除pass

QList<Qt3DRender::QRenderPass *> QTechnique::renderPasses() const

返回技术中包含的渲染通道列表。

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