docs: update RHI API docs

This commit is contained in:
2026-03-20 02:35:45 +08:00
parent ea756c0177
commit 070b444f8f
501 changed files with 13493 additions and 2022 deletions

View File

@@ -0,0 +1,37 @@
# RHIPipelineState::Bind
```cpp
virtual void Bind() = 0;
```
将管线状态绑定到渲染上下文。调用此方法后,该管线状态将成为当前活跃的渲染管线。
**参数:**
**返回:**
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHIPipelineState.h"
class MyRenderer {
void DrawWithPipeline(RHIPipelineState* pipeline) {
pipeline->Bind();
// 执行绘制操作
// Draw calls...
pipeline->Unbind();
}
};
```
## 相关文档
- [RHIPipelineState](pipeline-state.md) - 返回类总览
- [RHIPipelineState::Unbind](unbind.md) - 解绑管线状态

View File

@@ -4,12 +4,40 @@
virtual void* GetNativeHandle() = 0;
```
获取原生 API 句柄。
获取底层图形 API 的原生句柄。此方法返回的句柄类型取决于具体实现:
**返回:** 原生管线状态句柄
- **D3D12**: `ID3D12PipelineState*`
- **OpenGL**: `GLuint`(管线对象 ID
- **Vulkan**: `VkPipeline`
- **Metal**: `id<MTLRenderPipelineState>`
**参数:**
**返回:** `void*` - 指向底层图形 API 管线状态对象的指针
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHIPipelineState.h"
#include "XCEngine/RHI/RHIEnums.h"
void InspectNativeHandle(RHIPipelineState* pipeline) {
void* handle = pipeline->GetNativeHandle();
PipelineType type = pipeline->GetType();
if (type == PipelineType::Graphics && handle) {
// D3D12: ID3D12PipelineState* d3d12Pipeline = static_cast<ID3D12PipelineState*>(handle);
// OpenGL: GLuint glPipeline = static_cast<GLuint>(reinterpret_cast<uintptr_t>(handle));
}
}
```
## 相关文档
- [RHIPipelineState 总览](pipeline-state.md) - 返回类总览
- [RHIPipelineState](pipeline-state.md) - 返回类总览
- [RHIPipelineState::GetType](get-type.md) - 获取管线类型

View File

@@ -4,12 +4,46 @@
virtual PipelineType GetType() const = 0;
```
获取管线类型。
获取管线类型。返回的管线类型用于区分不同的渲染管线类别。
**返回** 管线类型枚举值
**参数**
**返回:** `PipelineType` - 管线类型枚举值
| 枚举值 | 描述 |
|--------|------|
| `PipelineType::Graphics` | 图形管线,用于常规渲染(顶点着色器、片段着色器) |
| `PipelineType::Compute` | 计算管线,用于通用 GPU 计算 |
| `PipelineType::Raytracing` | 光线追踪管线,用于光线追踪渲染 |
**线程安全:**const 方法)
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHIPipelineState.h"
#include "XCEngine/RHI/RHIEnums.h"
void ProcessPipeline(RHIPipelineState* pipeline) {
PipelineType type = pipeline->GetType();
switch (type) {
case PipelineType::Graphics:
pipeline->Bind();
break;
case PipelineType::Compute:
// 分发计算任务
break;
case PipelineType::Raytracing:
// 执行光线追踪
break;
}
}
```
## 相关文档
- [RHIPipelineState 总览](pipeline-state.md) - 返回类总览
- [RHIPipelineState](pipeline-state.md) - 返回类总览
- [RHIPipelineState::GetNativeHandle](get-native-handle.md) - 获取原生句柄

View File

@@ -1,41 +0,0 @@
# RHIPipelineState 方法
## Shutdown
```cpp
virtual void Shutdown() = 0;
```
释放管线状态对象。
## Bind
```cpp
virtual void Bind() = 0;
```
绑定管线状态到管线。
## Unbind
```cpp
virtual void Unbind() = 0;
```
解绑管线状态。
## GetNativeHandle
```cpp
virtual void* GetNativeHandle() = 0;
```
获取原生 API 句柄。
## GetType
```cpp
virtual PipelineType GetType() const = 0;
```
获取管线类型。

View File

@@ -4,27 +4,55 @@
**类型**: `class` (abstract)
**描述**: GPU 渲染管线状态抽象接口,封装了渲染管线的各种固定功能配置。
**头文件**: `XCEngine/RHI/RHIPipelineState.h`
**描述**: 管线状态接口,管理渲染管线状态
## 概述
`RHIPipelineState` 是 XCEngine RHI 模块中的抽象基类,定义了渲染管线状态的统一接口。它提供了绑定、解绑定、获取原生句柄以及查询管线类型等基本操作。作为抽象基类,具体实现由各图形 APID3D12、OpenGL、Vulkan、Metal自行实现。
此接口的主要作用是:
- 提供统一的管线状态管理抽象
- 屏蔽不同图形 API 的底层差异
- 支持图形管线、计算管线和光线追踪管线的管理
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Shutdown`](shutdown.md) | 关闭并释放资源 |
| [`Bind`](../shader/bind.md) | 绑定管线状态 |
| [`Unbind`](../shader/unbind.md) | 解绑管线状态 |
| [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 |
| [`GetType`](get-type.md) | 获取管线类型 |
| [`Shutdown`](shutdown.md) | 关闭并释放管线状态资源 |
| [`Bind`](bind.md) | 管线状态绑定到渲染上下文 |
| [`Unbind`](unbind.md) | 管线状态从渲染上下文解绑 |
| [`GetNativeHandle`](get-native-handle.md) | 获取底层图形 API 的原生句柄 |
| [`GetType`](get-type.md) | 获取管线类型(图形/计算/光线追踪) |
## 管线类型 (PipelineType)
## 使用示例
| 枚举值 | 描述 |
|--------|------|
| `Graphics` | 图形渲染管线 |
| `Compute` | 计算管线 |
| `Raytracing` | 光线追踪管线 |
```cpp
#include "XCEngine/RHI/RHIPipelineState.h"
#include "XCEngine/RHI/RHIEnums.h"
void ExampleUsage(RHIPipelineState* pipelineState) {
if (!pipelineState) {
return;
}
PipelineType type = pipelineState->GetType();
if (type == PipelineType::Graphics) {
pipelineState->Bind();
}
void* nativeHandle = pipelineState->GetNativeHandle();
pipelineState->Unbind();
pipelineState->Shutdown();
}
```
## 相关文档
- [../rhi/rhi.md](../rhi.md) - RHI 模块总览
- [RHIDevice](../device/device.md) - 创建设备
- [RHIDevice](../device/device.md) - 设备接口,创建管线状态
- [RHIPipelineLayout](../pipeline-layout/pipeline-layout.md) - 管线布局
- [RHICommandList](../command-list/command-list.md) - 命令列表,执行绘制命令

View File

@@ -4,10 +4,30 @@
virtual void Shutdown() = 0;
```
释放管线状态对象资源。
关闭并释放管线状态资源。此方法用于在管线状态不再需要时进行清理工作,释放底层图形 API 分配的资源。
**参数:**
**返回:**
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHIPipelineState.h"
class MyRenderer {
void ReleasePipeline(RHIPipelineState* pipeline) {
if (pipeline) {
pipeline->Shutdown();
}
}
};
```
## 相关文档
- [RHIPipelineState 总览](pipeline-state.md) - 返回类总览
- [RHIPipelineState](pipeline-state.md) - 返回类总览

View File

@@ -0,0 +1,32 @@
# RHIPipelineState::Unbind
```cpp
virtual void Unbind() = 0;
```
将管线状态从渲染上下文解绑。此方法用于结束当前管线状态的使用,使其不再是当前活跃的渲染管线。
**参数:**
**返回:**
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHIPipelineState.h"
class MyRenderer {
void EndRendering(RHIPipelineState* pipeline) {
pipeline->Unbind();
}
};
```
## 相关文档
- [RHIPipelineState](pipeline-state.md) - 返回类总览
- [RHIPipelineState::Bind](bind.md) - 绑定管线状态