77 lines
1.5 KiB
C++
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
|