Files
XCEngine/docs/api/rhi/fence/fence.md
2026-03-20 02:35:45 +08:00

60 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RHIFence
**命名空间**: `XCEngine::RHI`
**类型**: `class` (abstract)
**头文件**: `XCEngine/RHI/RHIFence.h`
**描述**: 围栏接口,用于 GPU 同步
## 概述
RHIFence 是 RHIRender Hardware Interface子系统中的围栏抽象接口用于在 CPU 和 GPU 之间进行同步操作。围栏是一种常用的 GPU 同步机制,允许 CPU 等待 GPU 完成特定任务,或让 GPU 等待 CPU 提交特定命令。
作为抽象基类RHIFence 定义了一组纯虚接口,具体实现由底层图形 API如 DirectX 12、Vulkan提供。
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Shutdown`](shutdown.md) | 关闭围栏并释放资源 |
| [`Signal`](signal.md) | 发送信号(无参数版本) |
| [`Signal`](signal-value.md) | 发送信号(带值版本) |
| [`Wait`](wait.md) | 等待围栏达到指定值 |
| [`GetCompletedValue`](getcompletedvalue.md) | 获取已完成的值 |
| [`IsSignaled`](issignaled.md) | 检查围栏是否已发出信号 |
| [`GetNativeHandle`](getnativehandle.md) | 获取原生句柄 |
## 使用示例
```cpp
#include "XCEngine/RHI/RHIFence.h"
// 假设通过 RHI 设备创建围栏
RHIFence* fence = device->CreateFence();
// 提交 GPU 命令...
// 发送信号
fence->Signal();
// 在 CPU 端等待 GPU 完成
fence->Wait(fence->GetCompletedValue());
// 检查是否已完成
if (fence->IsSignaled()) {
// GPU 工作已完成
}
// 获取原生句柄用于平台特定操作
void* nativeHandle = fence->GetNativeHandle();
// 关闭围栏
fence->Shutdown();
```
## 相关文档
- [RHI 模块总览](../rhi.md) - RHI 模块介绍