本页内容

SubRenderPass QML Type

将工作的一部分渲染到与父级RenderPass 相同的渲染目标中。更多...

Import Statement: import QtQuick3D
Since: Qt 6.11
Inherits:

Command

属性

详细说明

SubRenderPass 是一个Command ,它将RenderPass 划分为多个更小且可独立配置的片段,同时共享同一个渲染目标。只有父级RenderPass 才能控制渲染到哪些纹理中(通过ColorAttachment 和DepthTextureAttachment ),以及渲染阶段何时开始(从而决定何时清空渲染目标)。 子渲染通道(SubRenderPass)无法设置自己的渲染目标或清除设置——这些设置始终从父通道继承。

子渲染通道(SubRenderPass)所能控制的是渲染的内容 及其方式:它拥有自己的渲染目标(commands ),因此可以携带一个渲染选择器(RenderablesFilter )来选择对象子集,一个渲染通道(PipelineStateOverride )来更改深度/混合状态,一个不同的渲染目标(materialMode ),等等。

一个典型的应用场景是前向渲染管道,其中单次颜色渲染会分别使用独立的 SubRenderPass 处理背景、不透明对象和透明对象。这三个子渲染通道均写入相同的颜色和深度纹理,但各自具有不同的管道状态:

RenderPass {
    id: mainColorPass
    commands: [
        // Render targets are set at the parent RenderPass level only
        ColorAttachment { name: "color0"; target: colorTexture },
        DepthTextureAttachment { target: depthTexture },

        // Sub-pass 1: render the skybox background
        SubRenderPass { renderPass: skyboxSubPass },

        // Sub-pass 2: opaque objects with depth testing and writing
        SubRenderPass { renderPass: opaqueSubPass },

        // Sub-pass 3: transparent objects with blending, no depth write
        SubRenderPass { renderPass: transparentSubPass }
    ]
}

// Sub-passes share mainColorPass's render target
RenderPass {
    id: skyboxSubPass
    passMode: RenderPass.SkyboxPass
}

RenderPass {
    id: opaqueSubPass
    commands: [
        RenderablesFilter { renderableTypes: RenderablesFilter.Opaque }
    ]
}

RenderPass {
    id: transparentSubPass
    commands: [
        RenderablesFilter { renderableTypes: RenderablesFilter.Transparent },
        PipelineStateOverride {
            blendEnabled: true
            depthWriteEnabled: false
        }
    ]
}

另请参阅 RenderPass 、RenderablesFilter 以及PipelineStateOverride 。

属性文档

renderPass : RenderPass

RenderPass ,该函数将在处理此命令时作为子步骤执行。

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