QRenderPass 类

class Qt3DRender::QRenderPass

封装了渲染过程。 更多...

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

属性

公开函数

QRenderPass(Qt3DCore::QNode *parent = nullptr)
voidaddFilterKey(Qt3DRender::QFilterKey *filterKey)
voidaddParameter(Qt3DRender::QParameter *parameter)
voidaddRenderState(Qt3DRender::QRenderState *state)
QList<Qt3DRender::QFilterKey *>filterKeys() const
QList<Qt3DRender::QParameter *>parameters() const
voidremoveFilterKey(Qt3DRender::QFilterKey *filterKey)
voidremoveParameter(Qt3DRender::QParameter *parameter)
voidremoveRenderState(Qt3DRender::QRenderState *state)
QList<Qt3DRender::QRenderState *>renderStates() const
Qt3DRender::QShaderProgram *shaderProgram() const

公开槽

voidsetShaderProgram(Qt3DRender::QShaderProgram *shaderProgram)

信号

voidshaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

详细说明

Qt3DRender::QRenderPass 指定一个单独的渲染过程 - 着色器程序的执行实例 - 由 Qt3DRender::QTechnique 使用。渲染过程由一个 Qt3DRender::QShaderProgram 和一个 Qt3DRender::QFilterKey 对象列表,一个 Qt3DRender::QRenderState 对象列表和一个 Qt3DRender::QParameter 对象列表组成。

当至少有一个QFilterKey节点被引用且与QRenderPassFilter中的任何QFilterKey节点匹配,或者没有指定任何QFilterKey节点,同时帧图QRenderPassFilter不存在时,QRenderPass将使用给定的QRenderStateQParameter节点执行QShaderProgram

如果QRenderPass定义了一个QParameter,则如果它出现在任何关联的QTechniqueQEffectQMaterialQTechniqueFilterQRenderPassFilter中的QParameter中,该参数将被覆盖。这仍然可以用来定义合理的默认值。

在渲染时间,对于帧图中的每个叶节点,通过累积帧图分支中定义的所有QRenderStateSet节点的状态,记录一个基线渲染状态。每个QRenderPass可以通过指定自己的QRenderState节点来覆盖这个基线渲染状态。

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

// Create shader program
QShaderProgram *glShader = new QShaderProgram();

// Set the shader on the render pass
pass->setShaderProgram(glShader);

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

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

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

// Add parameter to pass
pass->addParameter(colorParameter);

// Create a QRenderState
QDepthTest *depthTest = new QDepthTest();

// Add the render state to the pass
pass->addRenderState(depthTest);

另见:QRenderPassFilterQFilterKeyQParameterQRenderStateQEffect、以及QTechnique

属性文档

shaderProgram : Qt3DRender::QShaderProgram*

指定要为此渲染传递使用的着色器程序。

访问函数

Qt3DRender::QShaderProgram *shaderProgram() const
voidsetShaderProgram(Qt3DRender::QShaderProgram *shaderProgram)

通知器信号

voidshaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

成员函数文档

[显式] QRenderPass::QRenderPass(Qt3DCore::QNode *parent = nullptr)

使用指定的parent构建一个新的QRenderPass。

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

filterKey添加到Qt3DRender::QRenderPass的本地过滤键中。

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

parameter添加到渲染传递的参数中。

void QRenderPass::addRenderState(Qt3DRender::QRenderState *state)

向渲染传递中添加一个state。这意味着当在渲染时间执行传递时,全局设置的渲染状态将由Qt3DRender::QRenderPass本地定义的状态修改。

注意:一个传递中未定义Qt3DRender::QRenderState将导致传递在给定帧图分支执行路径上使用全局设置的渲染状态。

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

返回组成 Qt3DRender::QFilterKey 筛选键的 Qt3DRender::QRenderPass 筛选键对象的列表。

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

返回渲染通道当前参数的向量。

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

Qt3DRender::QRenderPass 的本地筛选键中移除 filterKey

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

从渲染通道的参数中移除 parameter

void QRenderPass::removeRenderState(Qt3DRender::QRenderState *state)

Qt3DRender::QRenderPass 的本地渲染状态中移除 state

QList<Qt3DRender::QRenderState *> QRenderPass::renderStates() const

返回组成 Qt3DRender::QRenderState 状态的 Qt3DRender::QRenderState 状态对象的列表。

相关的非成员

[alias] ParameterList

Qt3DRender::QParameter 参数的列表。

© 2024 The Qt Company Ltd. 本文档中的文档贡献者各自拥有版权。本文件中的文档基于自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和相应的徽标是芬兰及全球其他国家的 The Qt Company Ltd. 的 商标。所有其他商标均为其各自所有者的财产。