# D3D12SwapChain **命名空间**: `XCEngine::RHI` **继承自**: `RHISwapChain` ## 概述 `D3D12SwapChain` 是 DirectX 12 交换链的 D3D12 实现,继承自 `RHISwapChain`。该类负责管理 DXGI 交换链的创建、呈现、分辨率调整等操作,是 D3D12 RHI 后端的核心组件之一。 交换链维护多个后台缓冲区用于双缓冲或三缓冲渲染,通过 `Present` 方法将已完成渲染的缓冲区呈现到屏幕。 ## 公共方法 | 方法 | 描述 | |------|------| | [`D3D12SwapChain`](constructor.md) | 构造函数 | | [`~D3D12SwapChain`](destructor.md) | 析构函数 | | [`Initialize (from factory)`](initialize-from-factory.md) | 从工厂创建新交换链 | | [`Initialize (from swapchain)`](initialize-from-swapchain.md) | 从已有交换链初始化 | | [`Shutdown`](shutdown.md) | 关闭交换链 | | [`GetCurrentBackBufferIndex`](get-current-back-buffer-index.md) | 获取当前后台缓冲区索引 | | [`GetCurrentBackBuffer`](get-current-back-buffer.md) | 获取当前后台缓冲区 | | [`GetBackBuffer`](get-back-buffer.md) | 获取后台缓冲区 | | [`Present`](present.md) | 呈现画面 | | [`Resize`](resize.md) | 调整交换链大小 | | [`SetFullscreen`](set-fullscreen.md) | 设置全屏模式 | | [`IsFullscreen`](is-fullscreen.md) | 检查是否全屏 | | [`ShouldClose`](should-close.md) | 检查是否应关闭 | | [`SetShouldClose`](set-should-close.md) | 设置关闭标志 | | [`PollEvents`](poll-events.md) | 处理窗口事件 | | [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 | | [`GetSwapChain`](get-swap-chain.md) | 获取 D3D12 交换链 | ## 使用示例 ```cpp // 创建交换链 D3D12SwapChain swapChain; swapChain.Initialize(factory, commandQueue, hwnd, 1920, 1080, 2); // 渲染循环 while (!swapChain.ShouldClose()) { swapChain.PollEvents(); // 获取当前后台缓冲区进行渲染 D3D12Texture* backBuffer = swapChain.GetCurrentBackBuffer(); // ... 渲染操作 ... // 呈现 swapChain.Present(1, 0); } // 关闭 swapChain.Shutdown(); ``` ## 相关文档 - [D3D12 后端总览](../d3d12.md)