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

1.8 KiB
Raw Blame History

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 端的描述符句柄

使用示例

#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();

相关文档