# D3D12RenderTargetView DirectX 12 渲染目标视图的 D3D12 实现。 ## 头文件 ```cpp #include ``` ## 公共成员函数 ### 构造函数与析构函数 #### `D3D12RenderTargetView()` 默认构造函数。 #### `~D3D12RenderTargetView()` 析构函数,确保调用 `Shutdown()`。 ### 初始化 #### `void Initialize(ID3D12Device* device, ID3D12Resource* resource, const D3D12_RENDER_TARGET_VIEW_DESC* desc = nullptr)` 在描述符堆中分配描述符并创建 RTV。 - `device`: D3D12 设备 - `resource`: 资源对象 - `desc`: RTV 描述(可选,自动推断) #### `void InitializeAt(ID3D12Device* device, ID3D12Resource* resource, D3D12_CPU_DESCRIPTOR_HANDLE handle, const D3D12_RENDER_TARGET_VIEW_DESC* desc = nullptr)` 在指定描述符句柄位置创建 RTV。 - `handle`: 预分配的描述符句柄 #### `void Shutdown()` 释放 RTV(不释放资源)。 ### 属性 #### `D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle() const` 获取 CPU 描述符句柄。 ### 静态辅助函数 #### `static D3D12_RENDER_TARGET_VIEW_DESC CreateDesc(Format format, D3D12_RTV_DIMENSION dimension = D3D12_RTV_DIMENSION_TEXTURE2D)` 创建 RTV 描述。 ## 内部成员 | 成员 | 类型 | 描述 | |------|------|------| | `m_handle` | `D3D12_CPU_DESCRIPTOR_HANDLE` | CPU 描述符句柄 | | `m_resource` | `ID3D12Resource*` | 关联的资源 | ## 使用示例 ```cpp D3D12RenderTargetView rtv; rtv.Initialize(device->GetDevice(), texture->GetResource()); // Or at specific handle D3D12_CPU_DESCRIPTOR_HANDLE handle = rtvHeap.GetCPUDescriptorHandle(0); D3D12RenderTargetView rtv2; rtv2.InitializeAt(device->GetDevice(), texture2->GetResource(), handle); ``` ## 备注 - RTV 不拥有底层资源,Shutdown 不会释放资源 - RTV 必须在 RTV 类型描述符堆中分配