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

2.3 KiB

RenderResourceCache

命名空间: XCEngine::Rendering

类型: class

头文件: XCEngine/Rendering/RenderResourceCache.h

描述: 负责把 MeshTexture 上传成 RHI 资源,并在渲染阶段按资源指针缓存这些 GPU 对象。

概述

RenderResourceCache 解决的是一个典型渲染层问题:场景与资源系统持有的是 CPU 侧 Mesh / Texture 对象,但绘制时真正需要的是 GPU 侧 buffer、texture 和 resource view。

当前缓存分成两类:

  • CachedMesh
  • CachedTexture

CachedMesh

字段 说明
vertexBuffer 顶点缓冲对象。
vertexBufferView 顶点缓冲视图。
indexBuffer 索引缓冲对象。
indexBufferView 索引缓冲视图。
vertexCount 顶点数量。
indexCount 索引数量。
vertexStride 顶点步长。
uses32BitIndices 是否使用 32 位索引。

CachedTexture

字段 说明
texture GPU 纹理对象。
shaderResourceView 着色器资源视图。
width 纹理宽度。
height 纹理高度。

当前实现边界

  • cache key 是 const Resources::Mesh*const Resources::Texture* 裸指针。
  • 当前没有脏标记或版本号,因此资源内容发生变化后,缓存不会自动失效。
  • 当前不是线程安全的。
  • 纹理格式映射目前只覆盖 RGBA8_UNORMRGBA8_SRGB
  • 上传纹理时当前固定按 width * 4 计算 rowPitch,因此只适用于当前支持的 4 字节每像素路径。

公开方法

方法 说明
Destructor 析构时清空缓存。
Shutdown 释放所有已缓存 GPU 资源。
GetOrCreateMesh 获取或创建网格缓存。
GetOrCreateTexture 获取或创建纹理缓存。

设计说明

把上传和缓存放在渲染层,而不是资源层,是个务实选择:

  • 资源层可以保持对具体 RHI 后端无感。
  • 渲染层可以根据当前 backend 和管线需要决定上传方式。

相关文档