2.5 KiB
2.5 KiB
RHISwapChain
命名空间: XCEngine::RHI
类型: class (abstract)
描述: GPU 交换链抽象接口,用于管理窗口渲染和帧缓冲区切换。
概述
RHISwapChain 封装了帧缓冲区交换链的操作,包括获取当前后台缓冲、呈现渲染结果、窗口调整等功能。
公共方法
生命周期
| 方法 | 描述 |
|---|---|
virtual void Shutdown() |
关闭交换链 |
交换链操作
| 方法 | 描述 |
|---|---|
virtual uint32_t GetCurrentBackBufferIndex() const |
获取当前后台缓冲索引 |
virtual RHITexture* GetCurrentBackBuffer() |
获取当前后台缓冲纹理 |
virtual void Present(uint32_t syncInterval = 1, uint32_t flags = 0) |
呈现渲染结果 |
virtual void Resize(uint32_t width, uint32_t height) |
调整交换链大小 |
全屏模式
| 方法 | 描述 |
|---|---|
virtual void SetFullscreen(bool fullscreen) |
设置全屏模式 |
virtual bool IsFullscreen() const |
检查是否全屏 |
窗口事件
| 方法 | 描述 |
|---|---|
virtual bool ShouldClose() const |
检查是否应该关闭 |
virtual void SetShouldClose(bool shouldClose) |
设置关闭标志 |
virtual void PollEvents() |
处理窗口事件 |
其他
| 方法 | 描述 |
|---|---|
virtual void* GetNativeHandle() |
获取原生 API 句柄 |
相关文档
// 创建交换链
SwapChainDesc swapChainDesc;
swapChainDesc.width = 1280;
swapChainDesc.height = 720;
swapChainDesc.bufferCount = 2;
swapChainDesc.format = (uint32_t)Format::R8G8B8A8_UNorm;
swapChainDesc.refreshRate = 60;
swapChainDesc.sampleCount = 1;
swapChainDesc.sampleQuality = 0;
swapChainDesc.swapEffect = 0;
swapChainDesc.flags = 0;
RHISwapChain* swapChain = device->CreateSwapChain(swapChainDesc);
// 渲染循环
while (!swapChain->ShouldClose()) {
swapChain->PollEvents();
// 获取当前后台缓冲
RHITexture* backBuffer = swapChain->GetCurrentBackBuffer();
// 录制渲染命令
commandList->Reset();
commandList->SetRenderTargets(1, &backBuffer, nullptr);
commandList->ClearRenderTarget(backBuffer, clearColor);
// ... 更多渲染命令 ...
commandList->Close();
// 执行并呈现
commandQueue->ExecuteCommandLists(1, (void**)&commandList);
swapChain->Present(1, 0);
}
swapChain->Shutdown();
相关文档
- RHITexture - 纹理资源
- RHICommandQueue - 命令队列
- RHIDevice - 创建设备