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

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

目录

  • 前言
  • GameRenderer
    • 1、GameRenderer.h
      • 1.1 头文件
      • 1.2 主体代码
    • 2、GameRenderer.cpp
      • 2.1 头文件
      • 2.2 主体代码
        • GameRenderer() 函数
        • UpdateEngineUBO() 函数
        • UpdateLights() 函数
        • UpdateLightsInFrustum() 函数
        • RenderScene() 函数
  • 总结

前言

本篇是 OvGame 的 Core 的第二篇,将探究其倒二层引用的文件:GameRenderer。该文件会包含 Core 的另一个部分 —— Context,所以如果读者已经有些遗忘、或是尚未了解过,请前往 Core(一)阅读。

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

GameRenderer

1、GameRenderer.h

1.1 头文件

#include 
#include 
#include 

#include "OvGame/Core/Context.h"

这里引入了 Overload 的 OvCore 模块的部分文件,在此不多讲述,遇到再简单探究;还引入了上一篇探究的 Context 文件。

1.2 主体代码

该文件的主体代码包含了一个 GameRenderer 类,负责游戏界面的渲染工作,定义如下:

class GameRenderer
	{
   
	public:
		/**
		* Create the EditorRenderer
		* @param p_context
		*/
		GameRenderer(Context& p_context);

		/**
		* Render the scene
		*/
		void RenderScene();

		/**
		* Update the engine UBO
		* @param p_mainCamera
		*/
		void UpdateEngineUBO(OvCore::ECS::Components::CCamera& p_mainCamera);

		/**
		* Update the light SSBO with the current scene
		* @param p_scene
		*/
		void UpdateLights(OvCore::SceneSystem::Scene& p_scene);

		/**
		* Update the light SSBO with the current scene (Lights outside of the given frustum are culled)
		* @param p_scene
		*/
		void UpdateLightsInFrustum(OvCore::SceneSystem::Scene& p_scene, const OvRendering::Data::Frustum& p_frustum);

	private:
		Context& m_context;
		OvCore::Resources::Material m_emptyMaterial;
	};

该类包含了两个私有类,类型分别是上篇文章的 Context.h 文件中定义的 Context 类与包含材质设置以及 Shader 的一个类 Material;另一方面,GameRenderer 的函数功能已有注释,不多赘述,我们来 cpp 文件中进一步探究:

2、GameRenderer.cpp

2.1 头文件

#include "OvGame/Core/GameRenderer.h"

#include 

#include 
#include 
#include 
#

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