2021SC@SDUSC
开源游戏引擎 Overload 代码模块分析 之 OvGame(四)—— Utils(终)大纲及 FPSCounter & Debug(上)大纲及 DriverInfo
目录
前言
正如上篇所说,本篇是为了 OvGame 的 Core 的 Game 部分,将先探究 OvGame 的其它文件: Utils 的 FPSCounter 以及 Debug 的 DriverInfo。
另外,若想先大致了解该引擎各个大模块,可前往笔者这篇相关文章查看。
若想了解 OvGame 大纲,可前往笔者这篇文章。
现在,让我们先了解一下 Utils 大纲及其 FPSCounter:
分析
1、Utils
1.1 大纲
Utils 文件包括了下列文件:
显然,该文件仅有一个 FPSCounter 部分,所以本篇也就直接是 Utils 的终篇了。现在开始探究 FPSCounter:
1.2 FPSCounter.h
1.2.1 头文件
#include <OvUI/Panels/PanelUndecorated.h>
#include <OvUI/Widgets/Texts/TextColored.h>
#include <OvWindowing/Window.h>
该文件包含的头文件都是来自 Overload 的其它模块,在此不多讲述,遇到再简单探究。
1.2.2 主体代码
主体是一个 FPSCounter 类,作用是显示帧速率的面板,定义如下:
class FPSCounter : public OvUI::Panels::PanelUndecorated
{
public:
/**
* Constructor
* @param p_window
*/
FPSCounter(OvWindowing::Window& p_window);
/**
* Update the data
* @param p_deltaTime
*/
void Update(float p_deltaTime);
private:
OvUI::Widgets::Texts::TextColored m_text;
OvWindowing::Window& m_window;
float m_elapsed = 0.0f;
uint32_t m_frames = 0;
};
首先,该类公有继承了 Overload 的模块 OvUI 中的 PanelUndecorated 类,功能是一个简单的面板,可以变形但没有样式(没有背景等),但它还层层向上公有继承了许多 OvUI::Panels 下的类,从底层至顶层依次是:
1、APanelTransformable 类,是一个本地化在画布中的面板。
2、Apanel 类,是画布的一个组件,是 UI 中的一种窗口。
3、任何小部件容器的基类 WidgetContainer 类与任何可绘制类的接口 IDrawable 类。
其次,FPSCounter 的变量还加入了有色文本类 TextColored 与窗口类 Window,此外定义了变量运行时间与帧数;函数也不多,咱们在 cpp 文件中深入探究:
1.3 FPSCounter.cpp
头文件仅有上述的 OvGame/Utils/FPSCounter.h,所以咱们直接看函数: