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 |
状态: | 已废弃 |
属性
- shaderProgram : Qt3DRender::QShaderProgram*
公共功能
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::QShaderProgram 和Qt3DRender::QFilterKey 对象列表、Qt3DRender::QRenderState 对象列表以及Qt3DRender::QParameter 对象列表组成。
当引用的QFilterKey 节点中至少有一个与QRenderPassFilter 中的QFilterKey 节点相匹配,或未指定QFilterKey 节点且 FrameGraph 中没有QRenderPassFilter 节点时,QRenderPass 会使用给定的QRenderState 和QParameter 节点执行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,QEffect 和QTechnique 。
属性文档
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 状态对象列表。
© 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.