QTechnique 类

class Qt3DRender::QTechnique

封装一个技术。更多...

头文件 #include <QTechnique>
CMakefind_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmakeQT += 3drender
实例化 技术
继承自 Qt3DCore::QNode

属性

公共函数

voidaddFilterKey(Qt3DRender::QFilterKey *filterKey)
voidaddParameter(Qt3DRender::QParameter *parameter)
voidaddRenderPass(Qt3DRender::QRenderPass *pass)
QList<Qt3DRender::QFilterKey *>filterKeys() const
Qt3DRender::QGraphicsApiFilter *graphicsApiFilter()
const Qt3DRender::QGraphicsApiFilter *graphicsApiFilter() const
QList<Qt3DRender::QParameter *>parameters() const
voidremoveFilterKey(Qt3DRender::QFilterKey *filterKey)
voidremoveParameter(Qt3DRender::QParameter *parameter)
voidremoveRenderPass(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时,创建几个每个都具有graphicsApiFilter并设置为匹配目标GL版本之一的QTechnique节点是有用的。在运行时,Qt3D渲染器将根据支持的图形API版本选择最合适的QTechnique,以及(如果指定)满足帧图中给定QTechniqueFilterQFilterKey节点。

注意:当使用OpenGL作为渲染的图形API时,Qt3D将依赖于运行时QSurfaceFormat返回的QSurfaceFormat::defaultFormat()来决定最合适的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);

另请参阅:QEffectQRenderPassQTechniqueFilter

属性文档

[只读] 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

返回组成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

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

© 2024 Qt公司。本文件中的文档贡献包括各自的版权所有人。本文件提供的文档服从由自由软件基金会发布的GNU自由文档许可证版本1.3条款。Qt及其相应标志是芬兰以及全球其他地区的Qt公司标志。所有其他商标均为其各自所有者的财产。