85 lines
2.1 KiB
C++
85 lines
2.1 KiB
C++
#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();
|