2021SC@SDUSC
开源游戏引擎 Overload 代码模块分析 之 OvGame(八)—— 终篇总结

目录

  • 前言
  • 回顾
    • 1、.rc
    • 2、Utils
    • 3、Debug
    • 4、Core
    • 5、Main.cpp
  • 总结

前言

本篇是开源游戏引擎 Overload 模块 OvGame 的最后一篇了。本篇,笔者将对 OvGame 做一个简单的总结

另外,想先大致了解 Overload 可前往这篇文章,想看其他相关文章请前往笔者的 Overload 专栏自主选择。

回顾

OvGame 模块是一个执行文件,其作用是 调用 Overload 的库及资源,实现游戏的运行展示。它包含了三个文件夹:Core、Debug、Utils,以及一个 Main.cpp 主函数;其次,它还使用了 .rc 文件 以及 resource.h 文件,现在让我们一一简单回顾一下吧(已附上链接):

1、.rc

.rc 文件本质是一个 .txt (文本)文件,一般配合 .h 文件(resource.h)使用;作为一个资源集合包,能引入各种文件,例如脚本、位图、窗口、图标等等。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame (一)—— 概况与 .rc 文件

2、Utils

核心是一个 FPSCounter 类,作用是生成一个显示帧速率的面板;因此,也公有继承了许多 Overload::OvUI::Panels 下的类。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(四)—— Utils(终)大纲及 FPSCounter & Debug(上)大纲及 DriverInfo

3、Debug

核心是三个类:DriverInfo、FrameInfo、GameProfiler

DriverInfo 类负责生成显示 Driver Information,驱动程序(硬件和软件)信息,的面板;同样也公有继承了许多 Overload::OvUI::Panels 下的类。而该类显示信息的方式核心是调用 glfw 的 glGetString(),能根据给出名称来获得所需的信息。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(四)—— Utils(终)大纲及 FPSCounter & Debug(上)大纲及 DriverInfo

FrameInfo 类可以生成 Frame Information,框架信息,的展示面板,也继承了 OvUI 的 PanelUndecorated 类;该类是直接读取结构体 FrameInfo 中的数据,显示出三角形个数、批次数、实例数的信息。

GameProfiler 类可以生成 Profiling Information,配置文件信息,的面板;该类具体展示的是一个操作的 “Action | Total duration | Frame Duration | Frame load | Total calls” 的内容。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(五)—— Debug(下)FrameInfo & GameProfiler

4、Core

核心是四个类:Application、Context、Game、GameRenderer;它们之间是不独立,层层调用(包括了上文的 Utils 和 Debug)关系。

首先,最底层的 Context 类,负责处理引擎的环境设置。该类包含了大量的公有 unique_ptr 智能指针,这些指针指向了 Overload 的各个重要模块,从而实现集合调度;因此,该类能够设置包括:资产路径、基础配置、窗口、图形环境、音频、物理引擎、服务、脚本等。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(二)—— Core(一)大纲与 Context

其次,叠上一层 GameRenderer 类,引入上述的 Context 类,负责游戏界面的渲染工作;使用的 OpenGL 接口,实现场景渲染、引擎 UBO(OpenGL 缓冲对象)设置、更新光照 SSBO(GLSL 缓冲对象)等。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(三)—— Core(二)GameRenderer

而后,再叠上一层 Game 类,引入了上述的 Context 类与 GameRenderer 类,以及 Utils 与 Debug 文件;该类负责处理游戏逻辑,其重要的操作是:从 PreUpdate() 启用输入和事件、经过 Update() 更新、到 PostUpdate() 结束输入输出缓存的一套逻辑更新(UBO、渲染器等等)。

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(六)—— Core(三)Game

最后,顶层的 Application 类,引入了上述的 Context 类与 Game 类,是 OvGame 模块的接口点;因此,该类的核心就是调用 Context 和 Game 等的内置变量与函数,实现运行应用

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(七)—— Core(四)Application & Main.cpp

5、Main.cpp

核心是利用条件编译命令,选择函数名为 int 型 main() 或 INT(重定义前即 int)型 WinMain(),实现总体调控是否进入 Debug 模式;函数体功能则是运行应用程序与中止引擎程序

详见:<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(七)—— Core(四)Application & Main.cpp

总结

通过回顾,我们可以发现 OvGame 的一个共同特点:层层引用,封装功能,集合调度。由此可见,对于一个应用程序来说,功能之间的独立性是非常重要的,这样既能使代码简明、逻辑清晰,又能使代码拥有很强的泛化能力,即可以之间用于其他项目,这是我们在以后的工作项目中可以考虑的编写方法。

<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(八)—— 终篇总结相关推荐

  1. <2021SC@SDUSC>开源游戏引擎Overload代码分析三(OvWindowing结束):OvWindowing——Dialogs

    2021SC@SDUSC Overload代码分析三:OvWindowing--Dialogs 前言 Dialogs 一.FileDialog FileDialog.h FileDialog.cpp ...

  2. <2021SC@SDUSC>【Overload游戏引擎】代码下载及安装配置

    <2021SC@SDUSC>[Overload游戏引擎]代码下载及安装配置 代码下载 安装配置 环境配置 代码编译 注意事项 代码下载 下载网址:https://gitee.com/mir ...

  3. 【Overload游戏引擎】源码分析之十三:OvRendering函数库(十一)

    2021SC@SDUSC 目录 1.Driver 1.1构造函数 1.2InitGlew 1.3GLDebugMessageCallback 2.Renderer 2.1Draw 2.2FetchGL ...

  4. 《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本

    1.Genesis-3D开源游戏引擎主要面向哪些用户人群?有限制吗? 1.我们的引擎没有限制,只要您想了解和使用我们的引擎,就可以加入Genesis-3D的大家庭. 2.我们的主要用户群是各个相关的企 ...

  5. 两大开源游戏引擎Cocos2d-x及OGEngine对比分析

    在近期的全球移动开发者大会上,触控发布了Cocos 3D引擎:而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣布将支持跨平台. Cocos2d-x和OGEngine都是当前比较受开发 ...

  6. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇:简介及目录》(附上完整工程文件)...

    2019独角兽企业重金招聘Python工程师标准>>> 跑酷游戏制作 游戏类型: 此游戏Demo,为跑酷类游戏. 框架简介: 游戏通常由程序代码和资源组成.如果说模型.贴图.声音之类 ...

  7. 开源游戏引擎_Hatchit:开源游戏引擎

    开源游戏引擎 通过视频游戏,越来越多的学生正在学习开源世界. 像FreeCiv和Minetest这样的开源游戏邀请年轻的玩家来研究源代码,而像SpigotMC这样的项目则使他们能够编写插件来扩展自己喜 ...

  8. HTML5 开源游戏引擎 LayaAir

    LayaAir是HTML5开源引擎 提供Canvas和Webgl同时渲染,如果Webgl不可用,则可自动切换到Canvas模式.引擎为高性能游戏设计,支持AS,TS,JS三种语言开发,一套代码三端齐发 ...

  9. 最常见的开源游戏引擎

    开源即开放源代码(Open Source),游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞.物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等.无论是角 ...

  10. 最常用的开源游戏引擎

    开源即开放原代码(Open Source),游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞.物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等.无论是角 ...

最新文章

  1. 【Tree】迷宫生成算法
  2. cocos2dx 3.2之Lua打飞机项目
  3. 光落在你脸上,可爱一如往常
  4. HNUSTOJ-1437 无题
  5. 用Siri显示二维码, iOS11, INGetVisualCodeIntent
  6. webpack 生产环境下插件用途
  7. spring框架类加载顺顺序 并 在spring启动后查询数据库加载到容器内
  8. LogServer日志详解
  9. IDW空间插值法matlab,基于IDW对PM2.5进行空间插值及可视化
  10. 最新服务器处理器天梯,2019服务器CPU天梯图之性能排行榜(双路三路四路) - 服务器百科...
  11. Lesson 6英语句子的种类(简单并列复合句)
  12. excel表格打印每页都有表头_Excel怎么能让每一页都打印上相同的顶端和底端标题?...
  13. Java 的设计模式
  14. 深度学习——模型量化、压缩及加速( MobileNets )
  15. 《微信公众平台开发最佳实践》——导读
  16. [转载]复旦女博士于娟——为啥是我得癌症? (转)
  17. 微信域名检测的C#实现
  18. qt creater快捷键使用
  19. DB2-GPFS(General Parallel File System)并行文件系统简叙、安装使用及DB高可用
  20. java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC

热门文章

  1. 轻松复制百度文库内容
  2. VS2008下easyMule-VeryCD源代码的编译
  3. 写给那些要找电子发票的数据接口规范的程序猿
  4. java 微博 屏蔽_最新JAVA调用新浪微博API之发微博(转)
  5. fluent瞬态_瞬态环境
  6. meta分析-stata软件使用
  7. 工艺仿真Process Simulate新亮点
  8. 黑色沙漠未能连接补丁服务器,打开黑色沙漠提示网络异常或者连接不上
  9. 解析kml文件,提取经纬度信息存入csv
  10. 二.公共建筑安全防范系统配置