2.9 KiB
2.9 KiB
D3D12Buffer
命名空间: XCEngine::RHI
类型: class (继承自 RHIBuffer)
描述: DirectX 12 缓冲区的 D3D12 实现,继承自 RHIBuffer。
概述
D3D12Buffer 是 RHI 缓冲区接口的 DirectX 12 后端实现。该类封装了 ID3D12Resource 对象,提供缓冲区的创建、初始化、数据更新和状态管理功能。支持顶点缓冲区、索引缓冲区、常量缓冲区等多种缓冲区类型。
公共方法
D3D12 特有方法
| 方法 | 描述 |
|---|---|
Initialize |
初始化缓冲区 |
InitializeFromExisting |
从现有资源初始化 |
InitializeWithData |
初始化并写入数据 |
UpdateData |
更新数据 |
GetResource |
获取 D3D12 资源 |
GetDesc |
获取描述符 |
GetGPUVirtualAddress |
获取 GPU 虚拟地址 |
GetGPUAddress |
获取 GPU 地址 |
继承自 RHIBuffer 的方法
| 方法 | 描述 |
|---|---|
Shutdown |
关闭缓冲区 |
Map |
映射缓冲区 |
Unmap |
取消映射 |
SetData |
设置数据 |
GetSize |
获取缓冲区大小 |
GetState |
获取资源状态 |
SetState |
设置资源状态 |
GetName |
获取资源名称 |
SetName |
设置资源名称 |
GetStride |
获取步长 |
SetStride |
设置步长 |
GetBufferType |
获取缓冲区类型 |
SetBufferType |
设置缓冲区类型 |
GetNativeHandle |
获取原生句柄 |
使用示例
// 创建顶点缓冲区
D3D12Buffer vertexBuffer;
vertexBuffer.Initialize(
device,
sizeof(Vertex) * vertexCount,
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER,
D3D12_HEAP_TYPE_DEFAULT);
vertexBuffer.SetName(L"VertexBuffer");
vertexBuffer.SetBufferType(BufferType::Vertex);
vertexBuffer.SetStride(sizeof(Vertex));
// 创建索引缓冲区(带初始数据)
D3D12Buffer indexBuffer;
uint16_t indices[] = { 0, 1, 2, 1, 3, 2 };
indexBuffer.InitializeWithData(
device,
commandList,
indices,
sizeof(indices),
D3D12_RESOURCE_STATE_INDEX_BUFFER);
// 使用 UPLOAD 堆更新数据
D3D12Buffer uploadBuffer;
uploadBuffer.Initialize(device, uploadSize, D3D12_RESOURCE_STATE_GENERIC_READ, D3D12_HEAP_TYPE_UPLOAD);
uploadBuffer.UpdateData(newData, dataSize);
相关文档
- D3D12 后端总览
- RHIBuffer - 抽象缓冲区接口