Qt3DRender::QRenderPass Class
class Qt3DRender::QRenderPass封装了一个渲染通道。更多...
| 头文件: | #include <qrenderpass.h> |
| 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 ,当运行时与该渲染通道关联的QTechnique 、QEffect 、QMaterial 、QTechniqueFilter 或QRenderPassFilter 中存在同名的QParameter 时,该默认值将被后者覆盖。这对于定义合理的默认值仍然很有用。
在渲染时,对于 FrameGraph 的每个叶节点,会通过累加 FrameGraph 分支中所有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);另请参阅 QRenderPassFilter 、QFilterKey 、QParameter 、QRenderState 、QEffect 以及QTechnique 。
属性文档
shaderProgram : Qt3DRender::QShaderProgram*
指定用于此渲染通道的着色器程序。
访问函数:
| Qt3DRender::QShaderProgram * | shaderProgram() const |
| void | setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram) |
通知器信号:
| 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::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::QRenderPass 渲染状态的Qt3DRender::QRenderState状态对象列表。
© 2026 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.