Files
XCEngine/docs/api/rhi/d3d12/unordered-access-view/index.md
2026-03-20 02:35:45 +08:00

61 lines
1.8 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.
# D3D12UnorderedAccessView
## 命名空间
`XCEngine::RHI`
## 类型
类 (Class)
## 描述
D3D12 无序访问视图 (Unordered Access View, UAV) 封装类,用于在 D3D12 渲染管线中提供对资源的无序读/写访问能力。UAV 允许着色器对资源进行非同步访问,适用于并行计算和延迟渲染等场景。
## 概述
`D3D12UnorderedAccessView` 封装了 D3D12 UAV 的创建和生命周期管理。UAV 是一种可以同时被 GPU 读取和写入的资源视图,常见用途包括:
- 计算着色器 (Compute Shader) 的数据存储
- 延迟渲染中的光照参数存储
- 粒子系统的位置/速度数据
- 纹理流式传输缓冲
## 公共方法表格
| 方法 | 签名 | 描述 |
|------|------|------|
| `Initialize` | `void Initialize(ID3D12Device* device, ID3D12Resource* resource, const D3D12_UNORDERED_ACCESS_VIEW_DESC* desc = nullptr)` | 初始化 UAV创建 D3D12 无序访问视图 |
| `Shutdown` | `void Shutdown()` | 释放 UAV 相关资源 |
| `GetCPUDescriptorHandle` | `D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle() const` | 获取 CPU 端的描述符句柄 |
## 使用示例
```cpp
#include "XCEngine/RHI/D3D12/D3D12UnorderedAccessView.h"
#include "XCEngine/RHI/D3D12/D3D12Device.h"
// 创建设备和资源后...
D3D12Device* device = ...;
ID3D12Resource* bufferResource = ...;
// 创建无序访问视图
XCEngine::RHI::D3D12UnorderedAccessView uav;
uav.Initialize(device->GetDevice(), bufferResource, nullptr);
// 在命令列表中设置 UAV
commandList->SetComputeRootUnorderedAccessView(
parameterIndex,
uav.GetCPUDescriptorHandle()
);
// 使用完毕后清理
uav.Shutdown();
```
## 相关文档
- [D3D12ShaderResourceView](../shader-resource-view/)
- [D3D12RenderTargetView](../render-target-view/)
- [D3D12ConstantBufferView](../constant-buffer-view/)