当前位置: 首页 > news >正文

P5-设置入口点

实现方式

- 创建Application文件作为引擎的总控制器

- 通过Application(); ~Application(); Run();实现生命周期的管理

- 创建CreateApplication();函数实现引擎统一调用应用程序

- 定义EntryPoint.h文件实现定义应用程序的入口点

Application文件具体代码

Application.cpp

#include "Application.h"namespace Hazel
{Application::Application(){}Application::~Application(){}void Application::Run(){while (true);}
}

Application.h

#pragma once
#include "Core.h"namespace Hazel
{class HAZEL_API Application{public:Application();virtual ~Application();void Run();};Application* CreateApplication(); // 由用户定义的CreateApplication()函数,返回一个 Hazel::Application 的实例}

EntryPoint.h具体代码

EntryPoint.h

#pragma once#ifdef HZ_PLATFORM_WINDOWS/*Entry Point 入口点定义了应用程序的入口点通过用户定义的 CreateApplication() 函数创建应用程序实例并运行它*/extern Hazel::Application* Hazel::CreateApplication(); // 由用户定义的CreateApplication()函数,返回一个 Hazel::Application 的实例int main(int argc,char** argv) {auto app = Hazel::CreateApplication(); // 创建应用程序实例app->Run();delete app;
}
#endif

具体实现流程

  • 程序从引擎内置统一入口启动
  • 引擎调用CreateApplication()函数
  • Sandbox创建自定义的应用子类实例
  • 向上转型为基类指针返回给引擎
  • 引擎持有应用对象,完全接管控制权
  • 调用 Run() 开启主循环
  • 程序持续运行
  • 退出时引擎统一析构、释放资源

引擎统一入口运行流程图

flowchart TD1[引擎统一入口 main]2[引擎调用 CreateApplication]3[Sandbox 自定义应用类]4[返回 Application 基类指针]5[引擎获取应用实例]6[执行 Application::Run]7[进入引擎主循环]8[程序结束 释放资源]1 --> 22 --> 33 --> 44 --> 55 --> 66 --> 77 --> 8
http://www.jsqmd.com/news/721718/

相关文章:

  • 广州哪家早茶最值得去,怎么找?一键解锁地道老牌早茶楼 - 资讯焦点
  • 博客园~我来啦~
  • 当YOLO遇见人脸:如何用5分钟构建工业级视觉检测系统
  • ArduPilot无人船调试实战:从PID到‘停止转向’,手把手教你调出丝滑航线
  • 关于某高校课程的反差错乱
  • HTML5 Canvas:全面解析与深度应用
  • 林的博客 - 2026.4.29
  • 上海有哪些值得去的火锅店,怎么找?美团榜单精准选店攻略 - 资讯焦点
  • AI推理时计算2026:让模型在回答时思考更多的工程实践
  • ISO-27145实战避坑指南:搞懂OBD诊断中的单帧、首帧与流控帧(ISO15765-2解析)
  • 别再折腾了!用Miniconda搞定PyTorch环境,从安装到验证的保姆级避坑指南
  • 上海本帮菜哪家最正宗,怎么找?本地人地道觅食攻略 - 资讯焦点
  • 告别Focal Loss的‘离散’局限:用Generalized Focal Loss让目标检测的标签‘活’起来
  • Go 错误处理
  • 4D CNN在乳腺癌无创诊断中的突破与应用
  • 别再为Electron webview通信发愁了!手把手教你用postMessage搞定双向传值(附React/Vue示例)
  • M5Stack热成像模块开发与应用指南
  • 成都怎么找最正宗的火锅店?高口碑地道火锅查找指南 - 资讯焦点
  • 为什么你的foobar2000需要这款开源歌词插件?5分钟打造完美音乐体验
  • 别再傻傻分不清了!一文搞懂UART、RS232、RS485和RS-422到底怎么选(附接线图)
  • V2V协同感知与CATS-V2V数据集技术解析
  • 别再只用GitHub了!手把手教你用GitBlit在Windows服务器上搭建私有代码仓库(附TortoiseGit配置)
  • 强化学习工具规划与GRPO算法实践指南
  • 不止于调试:用ESP32的UART1和UART2打造一个智能家居串口网关(Arduino项目)
  • Arm PMU性能监控单元架构与溢出机制详解
  • 手把手教你用PDI Spoon连接Pentaho Server 9.4,实现ETL作业的Web端管理
  • C# WinForm处理CSV文件时,你踩过这几个坑吗?聊聊编码、逗号转义和DataGridView性能优化
  • 上海聚餐日料推荐哪里,怎么找?一站式聚餐觅食攻略 - 资讯焦点
  • 别再折腾虚拟机了!用Docker Desktop 5分钟在Windows上跑起Hadoop伪分布式环境
  • Winhance中文版:你的Windows终极优化指南,三步打造高效系统