MQEngine
载入中...
搜索中...
未找到
engine.h
浏览该文件的文档.
1/*
2 *@file engine.h
3 */
4
5#ifndef ENGINE_H
6#define ENGINE_H
7#include "application.h"
8#include "systemmanager.h"
9#include "layout.h"
10
11namespace FCT
12{
13 class Layout;
14}
15
16namespace MQEngine {
17 class EngineScope;
19 {
20 public:
21 Engine(const Engine&) = delete;
22 Engine& operator=(const Engine&) = delete;
23 void loop();
24 static Engine& getInstance();
25 friend class EngineScope;
26 private:
27 void init(Application* application);
28 void term();
29 void settingUpEnv();
30 void settingUpLayout();
31 void settingUpPass();
32 void settingUpResources();
33 void settingUpSync();
35 void initUniformValue();
36 void logicTick();
37 Engine() = default;
38 ~Engine() = default;
41 FCT::Runtime m_rt;
43 FCT::Window* m_wnd;
44 FCT::Context* m_ctx;
45 FCT::StaticMesh<uint32_t>* m_mesh;
46 FCT::StaticMesh<uint32_t>* m_floor;
47 FCT::VertexLayout vertexLayout = {
48 FCT::VertexElement{FCT::VtxType::Color4f,"color"},
49 FCT::VertexElement{FCT::VtxType::Position4f,"position"},
50 FCT::VertexElement{FCT::VtxType::TexCoord2f,"texCoord"},
51 FCT::VertexElement{FCT::VtxType::Normal3f,"normal"},
52 };
53 FCT::PixelLayout pixelLayout = {
54 FCT::VertexElement{FCT::VtxType::Custom,"srcpos",FCT::Format::R32G32B32A32_SFLOAT},
55 FCT::VertexElement{FCT::VtxType::Custom,"shadowPos",FCT::Format::R32G32B32A32_SFLOAT},
57 };
58 FCT::Sampler* m_shadowSampler;
59 FCT::ShaderRef m_vs;
60 FCT::ShaderRef m_ps;
61 FCT::ShaderRef m_vsShadow;
62 FCT::ConstLayout m_shadowConstLayout = {
63 "ShadowUniform",
64 FCT::ConstElement{FCT::ConstType::MVPMatrix,"lightMvp"},
65 };
66 FCT::RHI::RasterizationPipeline* m_pipeline;
67 FCT::UniformBuffer* m_uniform;
68 FCT::RHI::ConstBuffer* m_constBuffer;
69 FCT::Vec4 m_lightPos;
70 FCT::AutoViewport* m_autoViewport;
71 int m_lightType = 1;
72 FCT::Uniform m_shadowUniform;
73 FCT::Uniform m_baseUniform;
74 FCT::Layout* m_layout;
75 FCT::Layout* m_shadowLayout;
76 float m_lightDistance = 40.0f;
77 float m_ambientColor[3] = { 0.2f, 0.2f, 0.2f };
78 float m_diffuseColor[3] = { 0.5f, 0.5f, 0.5f };
79 float m_specularColor[3] = { 1.0f, 1.0f, 1.0f };
80 float m_shininess = 32.0f;
81 float m_constant = 1.0f;
82 float m_linearAttenuation = 0.09f;
83 float m_quadratic = 0.032f;
84 float m_cutOffAngle = 45.0f;
85 };
86
89 ENGINE_API const char* getEngineVersion();
94}
95#endif //ENGINE_H
#define ENGINE_API
定义 EnginePCH.h:14
定义 application.h:33
定义 engine.h:19
float m_ambientColor[3]
定义 engine.h:77
FCT::ConstLayout m_shadowConstLayout
定义 engine.h:62
float m_diffuseColor[3]
定义 engine.h:78
float m_specularColor[3]
定义 engine.h:79
FCT::Runtime m_rt
定义 engine.h:41
SystemManager m_systemManager
定义 engine.h:42
float m_linearAttenuation
定义 engine.h:82
FCT::ShaderRef m_vs
定义 engine.h:59
Engine()=default
void settingUpResources()
定义 engine.cpp:91
void settingUpSync()
定义 engine.cpp:108
void term()
定义 engine.cpp:243
friend class EngineScope
定义 engine.h:25
Engine & operator=(const Engine &)=delete
FCT::Vec4 m_lightPos
定义 engine.h:69
float m_quadratic
定义 engine.h:83
FCT::Layout * m_layout
定义 engine.h:74
FCT::PixelLayout pixelLayout
定义 engine.h:53
FCT::Layout * m_shadowLayout
定义 engine.h:75
float m_constant
定义 engine.h:81
FCT::ShaderRef m_vsShadow
定义 engine.h:61
FCT::VertexLayout vertexLayout
定义 engine.h:47
void loop()
定义 engine.cpp:235
FCT::Window * m_wnd
定义 engine.h:43
void initUniformValue()
定义 engine.cpp:154
void logicTick()
定义 engine.cpp:197
void settingUpPass()
定义 engine.cpp:57
static Engine * s_instance
定义 engine.h:39
FCT::RHI::RasterizationPipeline * m_pipeline
定义 engine.h:66
static Engine & getInstance()
定义 engine.cpp:250
FCT::Uniform m_baseUniform
定义 engine.h:73
~Engine()=default
void init(Application *application)
定义 engine.cpp:223
FCT::ShaderRef m_ps
定义 engine.h:60
FCT::AutoViewport * m_autoViewport
定义 engine.h:70
FCT::Sampler * m_shadowSampler
定义 engine.h:58
Engine(const Engine &)=delete
float m_lightDistance
定义 engine.h:76
float m_shininess
定义 engine.h:80
void settingUpLayout()
定义 engine.cpp:19
void settingUpEnv()
定义 engine.cpp:6
int m_lightType
定义 engine.h:71
Application * m_application
定义 engine.h:40
FCT::StaticMesh< uint32_t > * m_mesh
定义 engine.h:45
FCT::Context * m_ctx
定义 engine.h:44
FCT::UniformBuffer * m_uniform
定义 engine.h:67
FCT::RHI::ConstBuffer * m_constBuffer
定义 engine.h:68
float m_cutOffAngle
定义 engine.h:84
FCT::Uniform m_shadowUniform
定义 engine.h:72
void settingUpSubmitTicker()
定义 engine.cpp:118
FCT::StaticMesh< uint32_t > * m_floor
定义 engine.h:46
定义 systemmanager.h:8
定义 engine.h:12
定义 application.h:3
ENGINE_API const char * getEngineVersion()
定义 Tutorial.cpp:8
ENGINE_API Engine & getEngine()
定义 Tutorial.cpp:12
class header for start and stop system