How sigtot/tdt4195-visual_computing_fundamentals-opengl works
Gloom is an OpenGL 3D rendering engine built around a GLFW window, OBJ asset loading, VAO uploads, shader programs, camera/input control, and a hierarchical scene graph. The principal workflow is: initialize the context, load terrain and helicopter assets, assemble animated scene nodes, process input and time-based animation, traverse transformations, and render the result through OpenGL. The sampled excerpts show the main runtime clearly; some exact shader setup calls are omitted.
Components 19
Application Control
- Application Bootstrap
gloom/src/main.cpp - GLFW Window
- Program Loop
gloom/src/program.cpp
Assets and Scene
- OBJ Loader
gloom/src/lib/OBJLoader.cpp - Lunar Terrain
gloom/src/resources/lunarsurface.obj - Helicopter Model
gloom/src/resources/helicopter.obj - Scene Construction
gloom/src/program.cpp - Scene Graph
gloom/src/lib/sceneGraph.cpp
Input and Animation
- Input Handling
gloom/src/inputs.cpp - Camera Control
gloom/src/program.cpp - Flight Animation
gloom/src/program.cpp
Rendering Pipeline
- VAO Upload
gloom/src/vao.cpp - Shader Program
gloom/src/gloom/shader.hpp - Vertex Shader
gloom/shaders/simple.vert - Fragment Shader
gloom/shaders/simple.frag - Scene Renderer
gloom/src/program.cpp
Other components
- User
- OpenGL Context
- Rendered Window
Connections 23
- User → Application Bootstrap: starts application
- Application Bootstrap → GLFW Window: creates context
- Application Bootstrap → Program Loop: runs loop
- GLFW Window → Program Loop: supplies window
- Program Loop → Scene Construction: builds scene
- Scene Construction → OBJ Loader: loads models
- OBJ Loader → Lunar Terrain: reads mesh
- OBJ Loader → Helicopter Model: reads mesh
- Scene Construction → Scene Graph: creates nodes
- Scene Construction → VAO Upload: uploads meshes
- Program Loop → Input Handling: processes input
- Input Handling → Scene Graph: updates nodes
- Program Loop → Camera Control: updates camera
- Program Loop → Flight Animation: advances time
- Flight Animation → Scene Graph: updates transforms
- Program Loop → Shader Program: uses shaders
- Shader Program → Vertex Shader: loads source
- Shader Program → Fragment Shader: loads source
- Program Loop → Scene Renderer: draws scene
- Scene Renderer → OpenGL Context: submits draws
- VAO Upload → OpenGL Context: binds buffers
- Shader Program → OpenGL Context: controls program
- OpenGL Context → Rendered Window: presents frames