How datwave999/opengl-gameengine works
OpenGL-GameEngine is a work-in-progress C++ 3D engine. Its principal runtime starts in Application: it initializes the window and assets, pushes the initial PlayState, then repeatedly updates and renders active states before swapping buffers. The README also identifies an ECS and custom OpenGL rendering as product capabilities, represented here by their component/system and graphics layers. AssetManager supports cached shader, texture, mesh, material, and model assets, including Assimp model import. Application wiring is sampled; links among unsampled gameplay, ECS, and rendering code are intentionally not asserted.
Main entry points: Application.cpp Application · AssetManager.cpp Asset Manager · Window.cpp Window · main.cpp Engine Entry
Components 25
Runtime and States
- Engine Entry
OpenGL-GameEngine/src/main.cpp - Application
OpenGL-GameEngine/src/Core/Application.cpp - Window
OpenGL-GameEngine/src/Core/Window.cpp - Input
OpenGL-GameEngine/src/Core/Input.cpp - State Interface
OpenGL-GameEngine/include/Core/State.h - Play State
OpenGL-GameEngine/src/Core/PlayState.cpp - Pause State
OpenGL-GameEngine/src/Core/PauseState.cpp - Camera
OpenGL-GameEngine/src/Core/Camera.cpp
Entity Component System
- Entity
OpenGL-GameEngine/include/ECS/Entity.h - Transform Component
OpenGL-GameEngine/include/ECS/Components/TransformComponent.h - Render Component
OpenGL-GameEngine/include/ECS/Components/RenderComponent.h - Light Components
OpenGL-GameEngine/include/ECS/Components/LightComponents.h - Transform System
OpenGL-GameEngine/src/ECS/Systems/TransformSystem.cpp - Render System
OpenGL-GameEngine/src/ECS/Systems/RenderSystem.cpp - Light System
OpenGL-GameEngine/src/ECS/Systems/LightSystem.cpp
OpenGL Rendering
- Shader
OpenGL-GameEngine/src/Graphics/Shader.cpp - GPU Buffer
OpenGL-GameEngine/src/Graphics/Buffer.cpp - Vertex Array
OpenGL-GameEngine/src/Graphics/VertexArray.cpp
Asset Management
- Asset Manager
OpenGL-GameEngine/src/Resources/AssetManager.cpp - Asset Data
OpenGL-GameEngine/include/Resources/AssetData.h
Other components
- Game User
- Assimp Importer
- STB Image
- GLFW
- OpenGL
Connections 18
- Game User → Engine Entry: starts
- Engine Entry → Application: creates
- Application → Window: creates
- Application → Asset Manager: initializes
- Application → Play State: pushes state
- Application → State Interface: updates and renders
- Application → Window: polls and swaps
- Application → Input: registers callbacks
- Window → GLFW: uses
- Asset Manager → Shader: creates
- Asset Manager → GPU Buffer: creates
- Asset Manager → Vertex Array: creates
- Asset Manager → Asset Data: stores assets
- Asset Manager → Assimp Importer: imports models
- Asset Manager → STB Image: loads images
- Shader → OpenGL: uses
- GPU Buffer → OpenGL: uploads data
- Vertex Array → OpenGL: configures arrays