本页内容

Qt3DRender::QTechnique Class

class Qt3DRender::QTechnique

封装了一种技术。更多...

标题: #include <qtechnique.h>
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 中定义的(同名)参数,但会被QRenderPassFilter 、QTechniqueFilter 、QMaterial 和QEffect 中的参数所覆盖。

在创建针对多个图形 API 版本的QEffect 时,建议创建多个 QTechnique 节点,并将每个节点的graphicsApiFilter 设置为与目标 GL 版本之一相匹配。 在运行时,Qt3D 渲染器将根据支持的图形 API 版本,以及(如果指定了)在 FrameGraph 中满足给定QTechniqueFilter 的QFilterKey 节点,选择最合适的 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)

将 `filterKey ` 添加到 `Qt3DRender::QTechnique ` 的本地过滤器键中。

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

将parameter 添加到该技术的参数中。

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

将pass 附加到该技术上。

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

返回由Qt3DCore::QFilterKey键对象组成的列表,这些对象构成了Qt3DRender::QTechnique 的过滤键。

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

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

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