fix: improve doc link navigation and tree display

- Fix link resolution with proper relative/absolute path handling
- Improve link styling with underline decoration
- Hide leaf nodes from tree, only show directories
- Fix log file path for packaged app
This commit is contained in:
2026-03-19 12:44:08 +08:00
parent e003fe6513
commit 58a83f445a
1012 changed files with 56880 additions and 22 deletions

View File

@@ -0,0 +1,37 @@
# D3D12Buffer
**命名空间**: `XCEngine::RHI`
**描述**: DirectX 12 缓冲区的 D3D12 实现,继承自 `RHIBuffer`
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Initialize`](initialize.md) | 初始化缓冲区 |
| [`InitializeFromExisting`](initialize-from-existing.md) | 从现有资源初始化 |
| [`InitializeWithData`](initialize-with-data.md) | 初始化并写入数据 |
| [`Shutdown`](shutdown.md) | 关闭缓冲区 |
| [`UpdateData`](update-data.md) | 更新数据 |
| [`Map`](map.md) | 映射缓冲区 |
| [`Unmap`](unmap.md) | 取消映射 |
| [`SetData`](set-data.md) | 设置数据 |
| [`GetResource`](get-resource.md) | 获取 D3D12 资源 |
| [`GetDesc`](get-desc.md) | 获取描述符 |
| [`GetGPUVirtualAddress`](get-gpu-virtual-address.md) | 获取 GPU 虚拟地址 |
| [`GetGPUAddress`](get-gpu-address.md) | 获取 GPU 地址 |
| [`GetSize`](get-size.md) | 获取缓冲区大小 |
| [`GetState`](get-state.md) | 获取资源状态 |
| [`SetState`](../../buffer/set-state.md) | 设置资源状态 |
| [`GetName`](get-name.md) | 获取资源名称 |
| [`SetName`](../../buffer/set-name.md) | 设置资源名称 |
| [`GetStride`](get-stride.md) | 获取步长 |
| [`SetStride`](../../buffer/set-stride.md) | 设置步长 |
| [`GetBufferType`](get-buffer-type.md) | 获取缓冲区类型 |
| [`SetBufferType`](../../buffer/set-buffer-type.md) | 设置缓冲区类型 |
| [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 |
## 相关文档
- [D3D12 后端总览](../../opengl/overview.md)
- [RHIBuffer](../../buffer/buffer.md) - 抽象缓冲区接口

View File

@@ -0,0 +1,16 @@
# D3D12Buffer::GetBufferType / SetBufferType
## 函数签名
```cpp
BufferType GetBufferType() const override
void SetBufferType(BufferType type) override
```
## 中文描述
获取和设置缓冲区类型Vertex / Index / Constant 等)。
## 复杂度
O(1)

View File

@@ -0,0 +1,19 @@
# D3D12Buffer::GetDesc
## 函数签名
```cpp
D3D12_RESOURCE_DESC GetDesc() const
```
## 中文描述
获取 D3D12 资源描述结构。
## 返回值
`D3D12_RESOURCE_DESC` - 资源描述
## 复杂度
O(1)

View File

@@ -0,0 +1,19 @@
# D3D12Buffer::GetGPUAddress
## 函数签名
```cpp
uint64_t GetGPUAddress() const
```
## 中文描述
获取 GPU 地址(等同于 `GetGPUVirtualAddress`)。
## 返回值
`uint64_t` - GPU 地址
## 复杂度
O(1)

View File

@@ -0,0 +1,19 @@
# D3D12Buffer::GetGPUVirtualAddress
## 函数签名
```cpp
D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress() const
```
## 中文描述
获取 GPU 虚拟地址,用于根签名绑定。
## 返回值
`D3D12_GPU_VIRTUAL_ADDRESS` - GPU 虚拟地址
## 复杂度
O(1)

View File

@@ -0,0 +1,16 @@
# D3D12Buffer::GetName / SetName
## 函数签名
```cpp
const std::string& GetName() const override
void SetName(const std::string& name) override
```
## 中文描述
获取和设置对象名称(用于调试)。
## 复杂度
O(1)

View File

@@ -0,0 +1,19 @@
# D3D12Buffer::GetNativeHandle
## 函数签名
```cpp
void* GetNativeHandle() override
```
## 中文描述
返回原生句柄,即 `ID3D12Resource*`
## 返回值
`void*` - 原生句柄
## 复杂度
O(1)

View File

@@ -0,0 +1,19 @@
# D3D12Buffer::GetResource
## 函数签名
```cpp
ID3D12Resource* GetResource() const
```
## 中文描述
获取底层 `ID3D12Resource` 指针。
## 返回值
`ID3D12Resource*` - D3D12 资源指针
## 复杂度
O(1)

View File

@@ -0,0 +1,19 @@
# D3D12Buffer::GetSize
## 函数签名
```cpp
uint64_t GetSize() const override
```
## 中文描述
获取缓冲区大小(字节)。
## 返回值
`uint64_t` - 缓冲区大小
## 复杂度
O(1)

View File

@@ -0,0 +1,16 @@
# D3D12Buffer::GetState / SetState
## 函数签名
```cpp
ResourceStates GetState() const
void SetState(ResourceStates state)
```
## 中文描述
获取和设置当前资源状态。用于状态跟踪和屏障生成。
## 复杂度
O(1)

View File

@@ -0,0 +1,16 @@
# D3D12Buffer::GetStride / SetStride
## 函数签名
```cpp
uint32_t GetStride() const override
void SetStride(uint32_t stride) override
```
## 中文描述
获取和设置顶点缓冲区步长(字节)。
## 复杂度
O(1)

View File

@@ -0,0 +1,35 @@
# D3D12Buffer::InitializeFromExisting
## 函数签名
```cpp
bool InitializeFromExisting(ID3D12Resource* resource)
```
## 中文描述
从已存在的 D3D12 资源对象初始化缓冲区包装类,不分配新资源。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `resource` | `ID3D12Resource*` | 已存在的 D3D12 资源指针 |
## 返回值
`bool` - 初始化是否成功
## 复杂度
O(1)
## 示例
```cpp
ComPtr<ID3D12Resource> existingResource;
device->CreateReservedResource(&desc, state, nullptr, IID_PPV_ARGS(&existingResource));
D3D12Buffer buffer;
buffer.InitializeFromExisting(existingResource.Get());
```

View File

@@ -0,0 +1,42 @@
# D3D12Buffer::InitializeWithData
## 函数签名
```cpp
bool InitializeWithData(ID3D12Device* device, ID3D12GraphicsCommandList* commandList, const void* data, uint64_t size, D3D12_RESOURCE_STATES finalState)
```
## 中文描述
创建缓冲区并通过命令列表从内存数据初始化内容。内部会自动创建上传堆、复制数据、转换状态。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `device` | `ID3D12Device*` | D3D12 设备指针 |
| `commandList` | `ID3D12GraphicsCommandList*` | 命令列表(用于复制操作) |
| `data` | `const void*` | 初始数据指针 |
| `size` | `uint64_t` | 数据大小(字节) |
| `finalState` | `D3D12_RESOURCE_STATES` | 数据复制完成后的目标状态 |
## 返回值
`bool` - 初始化是否成功
## 复杂度
O(n) - 取决于数据大小,内部创建临时上传堆
## 示例
```cpp
uint16_t indices[] = { 0, 1, 2, 1, 3, 2 };
D3D12Buffer indexBuffer;
D3D12Buffer::InitializeWithData(
device->GetDevice(),
cmdList->GetCommandList(),
indices,
sizeof(indices),
D3D12_RESOURCE_STATE_INDEX_BUFFER);
```

View File

@@ -0,0 +1,39 @@
# D3D12Buffer::Initialize
## 函数签名
```cpp
bool Initialize(ID3D12Device* device, uint64_t size, D3D12_RESOURCE_STATES initialState = D3D12_RESOURCE_STATE_COMMON, D3D12_HEAP_TYPE heapType = D3D12_HEAP_TYPE_DEFAULT)
```
## 中文描述
创建新缓冲区,分配 D3D12 显存资源。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `device` | `ID3D12Device*` | D3D12 设备指针 |
| `size` | `uint64_t` | 缓冲区大小(字节) |
| `initialState` | `D3D12_RESOURCE_STATES` | 初始资源状态(默认 COMMON |
| `heapType` | `D3D12_HEAP_TYPE` | 堆类型DEFAULT默认、UPLOAD上传、READBACK回读 |
## 返回值
`bool` - 初始化是否成功
## 复杂度
O(n) - 取决于缓冲区大小
## 示例
```cpp
D3D12Buffer vertexBuffer;
vertexBuffer.Initialize(
device->GetDevice(),
sizeof(Vertex) * vertexCount,
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER,
D3D12_HEAP_TYPE_DEFAULT);
```

View File

@@ -0,0 +1,27 @@
# D3D12Buffer::Map
## 函数签名
```cpp
void* Map() override
```
## 中文描述
将缓冲区内存映射到 CPU 可访问地址。仅对 UPLOAD 或 READBACK 堆有效。
## 返回值
`void*` - 映射的内存指针
## 复杂度
O(1)
## 示例
```cpp
void* mapped = uploadBuffer.Map();
memcpy(mapped, vertexData, sizeof(vertexData));
buffer.Unmap();
```

View File

@@ -0,0 +1,23 @@
# D3D12Buffer::SetData
## 函数签名
```cpp
void SetData(const void* data, size_t size, size_t offset = 0) override
```
## 中文描述
设置缓冲区数据。通过 Map/Unmap 实现。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `data` | `const void*` | 数据指针 |
| `size` | `size_t` | 数据大小 |
| `offset` | `size_t` | 缓冲区内的偏移量 |
## 复杂度
O(n)

View File

@@ -0,0 +1,15 @@
# D3D12Buffer::Shutdown
## 函数签名
```cpp
void Shutdown() override
```
## 中文描述
释放 D3D12 缓冲区资源,将成员变量置为空。
## 复杂度
O(1)

View File

@@ -0,0 +1,15 @@
# D3D12Buffer::Unmap
## 函数签名
```cpp
void Unmap() override
```
## 中文描述
解除缓冲区内存映射。
## 复杂度
O(1)

View File

@@ -0,0 +1,28 @@
# D3D12Buffer::UpdateData
## 函数签名
```cpp
void UpdateData(const void* data, uint64_t size)
```
## 中文描述
更新缓冲区数据。要求缓冲区使用 UPLOAD 堆类型,否则行为未定义。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `data` | `const void*` | 新数据指针 |
| `size` | `uint64_t` | 数据大小 |
## 复杂度
O(n)
## 示例
```cpp
uploadBuffer.UpdateData(newData, dataSize);
```