docs: update RHI API docs
This commit is contained in:
37
docs/api/rhi/pipeline-state/bind.md
Normal file
37
docs/api/rhi/pipeline-state/bind.md
Normal 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) - 解绑管线状态
|
||||
@@ -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) - 获取管线类型
|
||||
|
||||
@@ -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) - 获取原生句柄
|
||||
|
||||
@@ -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;
|
||||
```
|
||||
|
||||
获取管线类型。
|
||||
@@ -4,27 +4,55 @@
|
||||
|
||||
**类型**: `class` (abstract)
|
||||
|
||||
**描述**: GPU 渲染管线状态抽象接口,封装了渲染管线的各种固定功能配置。
|
||||
**头文件**: `XCEngine/RHI/RHIPipelineState.h`
|
||||
|
||||
**描述**: 管线状态接口,管理渲染管线状态
|
||||
|
||||
## 概述
|
||||
|
||||
`RHIPipelineState` 是 XCEngine RHI 模块中的抽象基类,定义了渲染管线状态的统一接口。它提供了绑定、解绑定、获取原生句柄以及查询管线类型等基本操作。作为抽象基类,具体实现由各图形 API(D3D12、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) - 命令列表,执行绘制命令
|
||||
|
||||
@@ -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) - 返回类总览
|
||||
|
||||
32
docs/api/rhi/pipeline-state/unbind.md
Normal file
32
docs/api/rhi/pipeline-state/unbind.md
Normal 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) - 绑定管线状态
|
||||
Reference in New Issue
Block a user