#pragma once #include 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