Extra2D/include/renderer/rhi/rhi_framebuffer.h

77 lines
1.5 KiB
C++

#pragma once
#include <renderer/rhi/rhi_types.h>
namespace extra2d {
/**
* @brief RHI 帧缓冲接口
*
* 抽象 GPU 帧缓冲对象 (FBO)
*/
class RHIFramebuffer {
public:
virtual ~RHIFramebuffer() = default;
/**
* @brief 绑定帧缓冲
*/
virtual void bind() = 0;
/**
* @brief 解绑帧缓冲
*/
virtual void unbind() = 0;
/**
* @brief 获取颜色附件数量
* @return 颜色附件数量
*/
virtual uint32_t getColorAttachmentCount() const = 0;
/**
* @brief 获取颜色附件纹理
* @param index 附件索引
* @return 纹理句柄
*/
virtual TextureHandle getColorAttachment(uint32_t index) const = 0;
/**
* @brief 获取深度/模板附件纹理
* @return 纹理句柄,无则返回无效句柄
*/
virtual TextureHandle getDepthStencilAttachment() const = 0;
/**
* @brief 获取帧缓冲宽度
* @return 宽度
*/
virtual uint32_t getWidth() const = 0;
/**
* @brief 获取帧缓冲高度
* @return 高度
*/
virtual uint32_t getHeight() const = 0;
/**
* @brief 检查是否有深度/模板附件
* @return 是否有深度/模板附件
*/
virtual bool hasDepthStencil() const = 0;
/**
* @brief 检查是否有效
* @return 是否有效
*/
virtual bool isValid() const = 0;
/**
* @brief 检查是否为默认帧缓冲(窗口帧缓冲)
* @return 是否为默认帧缓冲
*/
virtual bool isDefault() const = 0;
};
} // namespace extra2d