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

2021SC@SDUSC
开源游戏引擎 Overload 代码模块分析 之 OvGame(二)—— Core(一)大纲与 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 <OvRendering/Buffers/UniformBuffer.h>
#include <OvRendering/Buffers/ShaderStorageBuffer.h>

#include <OvPhysics/Core/PhysicsEngine.h>

#include <OvWindowing/Context/Device.h>
#include <OvWindowing/Inputs/InputManager.h>
#include <OvWindowing/Window.h>

#include <OvUI/Core/UIManager.h>

#include <OvCore/ECS/Renderer.h>
#include <OvCore/ResourceManagement/ModelManager.h>
#include <OvCore/ResourceManagement/TextureManager.h>
#include <OvCore/ResourceManagement/ShaderManager.h>
#include <OvCore/ResourceManagement/MaterialManager.h>
#include <OvCore/ResourceManagement/SoundManager.h>
#include <OvCore/SceneSystem/SceneManager.h>
#include <OvCore/Scripting/ScriptInterpreter.h>

#include <OvAudio/Core/AudioEngine.h>
#include <OvAudio/Core/AudioPlayer.h>

#include <OvTools/Filesystem/IniFile.h>

这些大模块的功能不是 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::ModelManager	modelManager;
		OvCore::ResourceManagement::TextureManager	textureManager;
		OvCore::ResourceManagement::ShaderManager	shaderManager;
		OvCore::ResourceManagement::MaterialManager	materialManager;
		OvCore::ResourceManagement::SoundManager	soundManager;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值