Files
mirage/src/core/render_context.h
2025-03-24 00:48:27 +08:00

85 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
/**
* @file mirage_render_context.h
* @brief 定义渲染上下文的抽象接口
*
* 本文件定义了mirage_render_context抽象类提供了渲染上下文的基本操作接口
* 包括初始化、清理、更新、环境配置和表面设置等功能。实际的渲染上下文实现
* 将继承此类并实现这些操作。
*/
#include "misc/mirage_type.h"
#include "sokol/sokol_header.h"
class mwindow;
/**
* @class mirage_render_context
* @brief 渲染上下文的抽象基类
*
* 定义了渲染上下文必须实现的操作接口,包括生命周期管理、
* 时间更新和渲染环境配置等。不同的渲染后端可以通过继承此类
* 实现特定的渲染逻辑。
*/
class mirage_render_context {
public:
/**
* @brief 虚析构函数
*
* 确保派生类可以正确析构。
*/
virtual ~mirage_render_context() = default;
//-------------- 生命周期管理 --------------
/**
* @brief 初始化渲染上下文
* @return 初始化是否成功
*
* 在渲染开始前准备渲染上下文的资源和状态。
*/
virtual bool init() { return false; }
/**
* @brief 完成初始化
*
* 在所有初始化步骤结束后调用,用于最终设置或清理。
*/
virtual void end_init() {}
/**
* @brief 清理渲染上下文
*
* 释放渲染上下文占用的资源。
*/
virtual void cleanup() { }
//-------------- 环境和表面设置 --------------
/**
* @brief 获取渲染环境
* @return 渲染环境配置
*
* 返回当前渲染上下文的环境配置用于底层渲染API。
*/
virtual sg_environment get_environment() = 0;
/**
* @brief 设置渲染表面
* @param in_window 要渲染到的窗口
* @return 设置是否成功
*
* 将渲染上下文与指定窗口的表面关联。
*/
virtual bool setup_surface(mwindow* in_window) { return false; }
};
/**
* @brief 创建渲染上下文实例
* @return 新创建的渲染上下文指针
*
* 工厂函数,创建适合当前平台的渲染上下文实现。
* 调用者负责管理返回的指针的生命周期。
*/
mirage_render_context* mirage_create_render_context();