Files
XCEngine/docs/api/rhi/rhi-buffer.md

3.2 KiB

RHIBuffer

命名空间: XCEngine::RHI

类型: class (abstract)

描述: GPU 缓冲区资源抽象接口,用于管理顶点缓冲、索引缓冲、常量缓冲等 GPU 内存资源。

概述

RHIBuffer 封装了 GPU 缓冲区的创建、数据上传、状态管理等操作。支持多种缓冲区类型,包括顶点缓冲、索引缓冲、常量缓冲等。

公共方法

生命周期

方法 描述
virtual void Shutdown() 释放缓冲区资源

数据操作

方法 描述
virtual void* Map() 映射缓冲区内存到 CPU 可访问
virtual void Unmap() 取消内存映射
virtual void SetData(const void* data, size_t size, size_t offset = 0) 设置缓冲区数据

属性访问

方法 描述
virtual uint64_t GetSize() const 获取缓冲区大小(字节)
virtual BufferType GetBufferType() const 获取缓冲区类型
virtual void SetBufferType(BufferType type) 设置缓冲区类型
virtual uint32_t GetStride() const 获取单个元素的字节大小
virtual void SetStride(uint32_t stride) 设置元素字节大小

状态管理

方法 描述
virtual ResourceStates GetState() const 获取当前资源状态
virtual void SetState(ResourceStates state) 设置资源状态

其他

方法 描述
virtual void* GetNativeHandle() 获取原生 API 句柄
virtual const std::string& GetName() const 获取缓冲区名称
virtual void SetName(const std::string& name) 设置缓冲区名称(用于调试)

缓冲区类型 (BufferType)

枚举值 描述
BufferType::Vertex 顶点缓冲
BufferType::Index 索引缓冲
BufferType::Constant 常量缓冲 (Constant Buffer)
BufferType::ReadBack 回读缓冲(用于 CPU 读取 GPU 数据)
BufferType::Indirect 间接执行缓冲
BufferType::RaytracingAccelerationStructure 光线追踪加速结构
BufferType::ShaderBindingTable 光线追踪着色器绑定表

资源状态 (ResourceStates)

状态 描述
Common 默认状态
VertexAndConstantBuffer 顶点/常量缓冲
IndexBuffer 索引缓冲
RenderTarget 渲染目标
UnorderedAccess 无序访问
DepthWrite 深度写入
DepthRead 深度读取
CopySrc 复制源
CopyDst 复制目标
Present 呈现状态

使用示例

// 创建设备后创建顶点缓冲
BufferDesc desc;
desc.size = sizeof(Vertex) * vertexCount;
desc.stride = sizeof(Vertex);
desc.bufferType = (uint32_t)BufferType::Vertex;
desc.flags = 0;

RHIBuffer* vertexBuffer = device->CreateBuffer(desc);

// 上传顶点数据
void* mapped = vertexBuffer->Map();
memcpy(mapped, vertexData, desc.size);
vertexBuffer->Unmap();

// 设置资源状态为顶点缓冲
vertexBuffer->SetState(ResourceStates::VertexAndConstantBuffer);

// 使用完毕后关闭
vertexBuffer->Shutdown();

相关文档