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

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

目录

  • 前言
  • 分析
    • 1、Core 大纲
    • 2、Context
      • 2.1 Context.h
        • 2.1.1 头文件
        • 2.1.2 主体代码
      • 2.2 Context.cpp
        • 2.2.1 头文件
        • 2.2.2 主体代码
          • Context() 函数
          • ~Context() 函数
  • 总结

前言

本文是 OvGame 系列的第二部分,笔者将开始解析 Overload 中 OvGame 的 Core 文件。考虑到 Core 文件包含多个文件,本文仅分析一部分,是第一篇。

另外,若想先大致了解该引擎各个大模块,可前往笔者这篇相关文章查看。
若想了解 OvGame 大纲,可前往笔者上篇文章。

分析

1、Core 大纲

Core 文件夹包括了下列 .h 与 .cpp 文件:

core.h
core.cpp

显而易见,Core 文件有四个部分:Application、Context、Game、GameRenderer。由于篇幅原因,本篇计划先探究其中一个部分。经过预先查看四个 .h 文件的头文件,笔者发现 Application 引用了 Game 与 Context,Game 引用了 Context 与 GameRenderer,而 GameRenderer 又引用了 Context。所以本篇先探究被引用的最底层部分:Context

2、Context

2.1 Context.h

2.1.1 头文件

Context 包含了相当多的 Overload 的其他模块文件:

#include 
#include 

#include 

#include 
#include 
#include 

#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 

#include 

这些大模块的功能不是 OvGame 的研究重点,想了解的读者可以前往笔者这篇概述文章大致了解一下,在此不深入,之后遇到相关使用也只会简单讲解,不会解析函数等的实现方法。不过其中的 OvTools 模块,笔者是已经探究过了,读者可以点击查看其 IniFile.h 的具体内容。

2.1.2 主体代码

主体是一个 Context 类,负责处理引擎的环境设置,代码如下:

	class Context
	{
   
	public:
		/**
		* Constructor
		*/
		Context();

		/**
		* Destructor
		*/
		~Context();

	public:
		const std::string engineAssetsPath;
		const std::string projectAssetsPath;
		const std::string projectScriptsPath;

		std::unique_ptr<OvWindowing::Context::Device>				device;
		std::unique_ptr<OvWindowing::Window>						window;
		std::unique_ptr<OvWindowing::Inputs::InputManager>			inputManager;
		std::unique_ptr<OvRendering::Context::Driver>				driver;
		std::unique_ptr<OvCore::ECS::Renderer>						renderer;
		std::unique_ptr<OvUI::Core::UIManager>						uiManager;
		std::unique_ptr<OvPhysics::Core::PhysicsEngine>				physicsEngine;
		std::unique_ptr<OvAudio::Core::AudioEngine>					audioEngine;
		std::unique_ptr<OvAudio::Core::AudioPlayer>					audioPlayer;
		std::unique_ptr<OvCore::Scripting::ScriptInterpreter>		scriptInterpreter;
		std::unique_ptr<OvRendering::Buffers::UniformBuffer>		engineUBO;
		std::unique_ptr<OvRendering::Buffers::ShaderStorageBuffer>	lightSSBO;

		OvCore::SceneSystem::SceneManager sceneManager;

		OvCore::ResourceManagement

你可能感兴趣的:(Overload,2021SC@SDUSC,游戏引擎)