2.1 KiB
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();