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 |
状态: | 已废弃 |
属性
- graphicsApiFilter : Qt3DRender::QGraphicsApiFilter* const
公共功能
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)
在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.