Files
XCEngine/docs/api/XCEngine/Rendering/RenderSurface/RenderSurface.md

3.2 KiB

RenderSurface

命名空间: XCEngine::Rendering

类型: class

头文件: XCEngine/Rendering/RenderSurface.h

描述: 描述当前渲染目标表面,包括尺寸、颜色附件、深度附件、清屏色覆盖和颜色附件自动状态切换策略。

概述

RenderSurface 的作用,是把“这一帧到底往哪里画”从具体 swap chain 或 framebuffer 管理逻辑里抽离出来。

当前它负责描述:

  • 宽高
  • 一组颜色附件
  • 一个深度附件
  • 可选清屏色覆盖
  • 颜色附件渲染前后状态
  • 是否自动执行颜色附件状态切换

这类抽象很符合商业引擎里 render target / render surface 的常见分层,因为同一条渲染管线不应该只会往窗口 back buffer 画。

当前实现边界

  • 当前只为颜色附件维护统一的 stateBefore / stateAfter,不是每个附件单独配置。
  • 自动状态切换当前只处理颜色附件,不处理深度附件。
  • 当前不会校验附件数量、附件尺寸与 RenderSurface 宽高是否匹配。
  • 当前没有 load/store action、MSAA resolve、mip slice 或 array slice 等更丰富的 surface 配置。

公开方法

方法 说明
Constructor 构造渲染表面。
GetWidth 获取宽度。
GetHeight 获取高度。
SetSize 设置宽高。
SetColorAttachment 设置单个颜色附件。
SetColorAttachments 设置多个颜色附件。
GetColorAttachments 获取颜色附件数组。
SetDepthAttachment 设置深度附件。
GetDepthAttachment 获取深度附件。
SetClearColorOverride 设置清屏色覆盖。
ClearClearColorOverride 清除清屏色覆盖。
HasClearColorOverride 判断是否启用了清屏色覆盖。
GetClearColorOverride 获取清屏色覆盖值。
SetAutoTransitionEnabled 设置是否自动切换颜色附件状态。
IsAutoTransitionEnabled 查询是否自动切换颜色附件状态。
SetColorStateBefore 设置渲染前颜色附件状态。
GetColorStateBefore 获取渲染前颜色附件状态。
SetColorStateAfter 设置渲染后颜色附件状态。
GetColorStateAfter 获取渲染后颜色附件状态。

设计说明

把 surface 做成独立对象,而不是让 pipeline 直接吃裸 RHIResourceView*,好处很明确:

  • 目标尺寸和附件集合可以一起传递。
  • 清屏策略和资源状态策略可以挂在目标上,而不是散落在调用点。
  • 同一条管线更容易复用于 back buffer、离屏纹理和 editor preview surface。

相关文档