How md12c/opengl-cmake-template works
This is an OpenGL rendering-engine template. The principal workflow is application input and frame control, scene rendering, model/material and lighting work, then framebuffer post-processing and display. The graph also preserves the README’s cameras, model formats, skybox, shading, shadows, culling, anti-aliasing, HDR/gamma, and ImGui capabilities. Several domain components are represented from the README and file tree because their implementations were not excerpted; those links are omitted where invocation ownership is not evidenced.
Main entry points: Renderer.cpp Forward Renderer · Scene.cpp Scene State · App.cpp Frame Loop · Models Models and Meshes
Components 22
Application
- Frame Loop
Template/src/App.cpp - Window Input
Template/src/Graphics/Window.cpp - ImGui Interface
Template/src/Graphics/ImguiSetup.cpp
Scene Domain
- Scene State
Template/src/Graphics/Scene.cpp - Camera Modes
Template/src/Graphics/Cameras - Models and Meshes
Template/src/Graphics/Models - Skybox and IBL
Template/src/Graphics/Models/Skybox.cpp - Lights and Shadows
Template/src/Graphics/Lighting/LightResources.cpp - Material Catalog
Template/src/Graphics/Materials/MaterialManager.cpp
Rendering
- Texture Loading
Template/src/Graphics/GLObjects/Texture.cpp - Forward Renderer
Template/src/Graphics/Renderer.cpp - Shader Programs
Template/src/Graphics/Shaders/Shader.cpp - Frustum Culling
Template/src/Graphics/Frustum - Frame Buffers
Template/src/Graphics/FrameBuffers - Post-Processing
Template/src/Graphics/FrameBuffers - GPU Resources
Template/src/Graphics/GLObjects
Runtime Libraries
- GLFW
Template/include/libraries/GLFW/glfw3.h - Dear ImGui
Template/include/libraries/imgui/imgui.cpp - GLM Math
Template/include/libraries/glm - Assimp Import
Template/include/libraries/assimp - stb Image
Template/include/libraries/stb/stb_image.h
Other components
- Operator
Connections 26
- Operator → Frame Loop: drives
Template/src/App.cpp - Frame Loop → Window Input: opens frames
Template/src/App.cpp - Frame Loop → Scene State: updates
Template/src/App.cpp - Frame Loop → Forward Renderer: renders scene
Template/src/App.cpp - Frame Loop → ImGui Interface: draws interface
Template/src/App.cpp - Window Input → GLFW: uses input
- ImGui Interface → Dear ImGui: uses UI library
- Scene State → Camera Modes: provides cameras
- Scene State → Models and Meshes: provides models
- Scene State → Skybox and IBL: provides skybox
- Scene State → Lights and Shadows: provides lights
- Models and Meshes → Assimp Import: imports assets
- Models and Meshes → Material Catalog: uses materials
- Material Catalog → Texture Loading: creates textures
Template/src/Graphics/Materials/MaterialManager.cpp - Forward Renderer → Scene State: reads scene
Template/src/Graphics/Renderer.cpp - Forward Renderer → Lights and Shadows: runs shadow pass
Template/src/Graphics/Renderer.cpp - Forward Renderer → Camera Modes: updates uniforms
Template/src/Graphics/Renderer.cpp - Forward Renderer → Models and Meshes: draws models
Template/src/Graphics/Renderer.cpp - Forward Renderer → Skybox and IBL: draws skybox
Template/src/Graphics/Renderer.cpp - Forward Renderer → Frustum Culling: sets planes
Template/src/Graphics/Renderer.cpp - Forward Renderer → Shader Programs: selects programs
Template/src/Graphics/Renderer.cpp - Forward Renderer → Frame Buffers: renders multisample
Template/src/Graphics/Renderer.cpp - Forward Renderer → Post-Processing: runs bloom pass
Template/src/Graphics/Renderer.cpp - Forward Renderer → GPU Resources: binds resources
Template/src/Graphics/Renderer.cpp - Texture Loading → stb Image: decodes images
- Forward Renderer → GLM Math: uses math