PySide6.Qt3DRender.Qt3DRender.QTechnique

class QTechnique

封装一个技术。更多

PySide6.Qt3DRender.Qt3DRender.QTechnique 的继承图

概要

属性

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

一个QTechnique指定了一组QRenderPass对象、QFilterKey对象、QParameter对象和一个QGraphicsApiFilter,它们共同定义了一种渲染技术,给定的图形API可以渲染。过滤器键由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

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property graphicsApiFilterᅟ: QGraphicsApiFilter

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

Access functions:
__init__([parent=None])
Parameters:

parentQNode

addFilterKey(filterKey)
Parameters:

filterKeyQFilterKey

filterKey添加到QTechnique的本地过滤键中。

addParameter(p)
Parameters:

pQParameter

parameter添加到技术的参数中。

addRenderPass(pass)
Parameters:

通过QRenderPass

向技术添加一个pass

filterKeys()
Return type:

Qt3DRender.QFilterKey的列表

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

graphicsApiFilter()
Return type:

QGraphicsApiFilter

属性 graphicsApiFilterᅟ 的获取器。

parameters()
Return type:

Qt3DRender.QParameter的列表

返回当前技术参数的向量

removeFilterKey(filterKey)
Parameters:

filterKeyQFilterKey

QTechnique 本地过滤键中移除 filterKey

removeParameter(p)
Parameters:

pQParameter

从技术的参数中移除parameter

removeRenderPass(pass)
Parameters:

通过QRenderPass

从技术中移除一个pass

renderPasses()
Return type:

Qt3DRender.QRenderPass的列表

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