Qt3DRender::QRenderPass Class

class Qt3DRender::QRenderPass

封装一个渲染传递。更多

头文件: #include <QRenderPass>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
在 QML 中: RenderPass
继承: Qt3DCore::QNode
状态:已废弃

属性

公共功能

QRenderPass(Qt3DCore::QNode *parent = nullptr)
void addFilterKey(Qt3DRender::QFilterKey *filterKey)
void addParameter(Qt3DRender::QParameter *parameter)
void addRenderState(Qt3DRender::QRenderState *state)
QList<Qt3DRender::QFilterKey *> filterKeys() const
QList<Qt3DRender::QParameter *> parameters() const
void removeFilterKey(Qt3DRender::QFilterKey *filterKey)
void removeParameter(Qt3DRender::QParameter *parameter)
void removeRenderState(Qt3DRender::QRenderState *state)
QList<Qt3DRender::QRenderState *> renderStates() const
Qt3DRender::QShaderProgram *shaderProgram() const

公共插槽

void setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram)

信号

void shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

详细说明

Qt3DRender::QRenderPass 指定了Qt3DRender::QTechnique 使用的单个渲染通道(着色器程序执行的一个实例)。渲染传递由Qt3DRender::QShaderProgramQt3DRender::QFilterKey 对象列表、Qt3DRender::QRenderState 对象列表以及Qt3DRender::QParameter 对象列表组成。

当引用的QFilterKey 节点中至少有一个与QRenderPassFilter 中的QFilterKey 节点相匹配,或未指定QFilterKey 节点且 FrameGraph 中没有QRenderPassFilter 节点时,QRenderPass 会使用给定的QRenderStateQParameter 节点执行QShaderProgram

如果 QRenderPass 定义了QParameter ,那么在运行时,如果同名的QParameter 存在于与该通行证相关联的QTechnique,QEffect,QMaterial,QTechniqueFilter,QRenderPassFilter 中,它将被覆盖。这对于定义合理的默认值仍然很有用。

在渲染时,通过累积 FrameGraph 分支中所有QRenderStateSet 节点定义的状态,为 FrameGraph 的每个叶节点记录基本渲染状态。每个 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);

另请参阅 QRenderPassFilter,QFilterKey,QParameter,QRenderState,QEffectQTechnique

属性文档

shaderProgram : Qt3DRender::QShaderProgram*

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

访问功能:

Qt3DRender::QShaderProgram *shaderProgram() const
void setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram)

Notifier 信号:

void shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram)

成员函数 文档

[explicit] 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 ,传递将在给定的 FrameGraph 分支执行路径上使用全局设置的呈现状态。

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

返回构成Qt3DRender::QRenderPass 过滤器键的Qt3DRender::QFilterKey 键对象列表。

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::QRenderPass 渲染状态的Qt3DRender::QRenderState 状态对象列表。

相关非成员

[alias] ParameterList

Qt3DRender::QParameter 参数列表。

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