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

2.1 KiB

D3D12SwapChain

命名空间: XCEngine::RHI

继承自: RHISwapChain

概述

D3D12SwapChain 是 DirectX 12 交换链的 D3D12 实现,继承自 RHISwapChain。该类负责管理 DXGI 交换链的创建、呈现、分辨率调整等操作,是 D3D12 RHI 后端的核心组件之一。

交换链维护多个后台缓冲区用于双缓冲或三缓冲渲染,通过 Present 方法将已完成渲染的缓冲区呈现到屏幕。

公共方法

方法 描述
D3D12SwapChain 构造函数
~D3D12SwapChain 析构函数
Initialize (from factory) 从工厂创建新交换链
Initialize (from swapchain) 从已有交换链初始化
Shutdown 关闭交换链
GetCurrentBackBufferIndex 获取当前后台缓冲区索引
GetCurrentBackBuffer 获取当前后台缓冲区
GetBackBuffer 获取后台缓冲区
Present 呈现画面
Resize 调整交换链大小
SetFullscreen 设置全屏模式
IsFullscreen 检查是否全屏
ShouldClose 检查是否应关闭
SetShouldClose 设置关闭标志
PollEvents 处理窗口事件
GetNativeHandle 获取原生句柄
GetSwapChain 获取 D3D12 交换链

使用示例

// 创建交换链
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();

相关文档