No description
- C++ 99.5%
- CMake 0.4%
- Shell 0.1%
Standalone CLI tool that scaffolds a fullscreen-triangle OpenGL 3.3 demo project (SDL3, ImGui, GLM, GLAD, stb_image, PipeWire) from embedded templates. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| include | ||
| src | ||
| .gitignore | ||
| build.sh | ||
| CMakeLists.txt | ||
| README.md | ||
introforge
Demoscene project generator for Arch Linux.
Single binary, no runtime dependencies. Embeds all project templates.
Stack generated
| Component | Role |
|---|---|
| OpenGL 3.3 | fullscreen triangle FST |
| SDL3 | window + events |
| ImGui | debug overlay |
| GLM | math |
| GLAD | OpenGL loader |
| stb_image | texture loading |
| PipeWire | real-time audio engine |
Build introforge
# Dependencies (Arch Linux)
sudo pacman -S cmake clang sdl3 glm pipewire git
bash build.sh
Usage
./build/introforge my-demo
cd my-demo
bash build.sh
bash run.sh
Generated project keys
| Key | Action |
|---|---|
| ESC | quit |
| F1 | toggle ImGui |
| R | reload shader |
| F11 | fullscreen |
Architecture
introforge/
├── src/
│ ├── main.cpp — CLI entry point
│ └── generator.cpp — file tree generator
├── include/
│ ├── generator.hpp — Generator + ProjectConfig
│ └── templates.hpp — all embedded file content
└── CMakeLists.txt
All generated content lives in templates.hpp as constexpr string_view.
Adding a new template = adding a constant + one write_file() call.
Future flags
introforge my-demo --raymarch # raymarch scaffold
introforge my-demo --audio # audio-only project
introforge my-demo --minimal # no ImGui / PipeWire
Flags are parsed but not yet dispatched — add a write_*_raymarch() method
to Generator and branch on cfg_.enable_raymarch.
Notes on third_party
GLAD sources must be downloaded separately from https://glad.dav1d.de/
(OpenGL 3.3 core, C/C++ loader) and placed in third_party/glad/.
The generator writes a README.md in that directory as a reminder.
stb_image.h: https://github.com/nothings/stb/blob/master/stb_image.h
Place in third_party/stb/.