Introduction
Cinder is a free, open-source C++ library for creative coding. It provides a clean, well-designed API for 2D/3D graphics, audio, video, and computational geometry. Used in professional installations, data visualizations, and commercial products, Cinder targets developers who need production-quality performance with a polished creative API.
What Cinder Does
- Renders hardware-accelerated 2D and 3D graphics via OpenGL
- Captures and processes video, webcam, and Kinect depth data
- Plays and analyzes audio with a real-time DSP graph
- Provides math primitives for vectors, matrices, splines, and computational geometry
- Loads images, fonts, SVGs, 3D models, and JSON with built-in parsers
Architecture Overview
Cinder is a static C++ library compiled alongside your application. It abstracts platform-specific windowing (Cocoa, Win32, X11) behind a uniform App class. The rendering pipeline uses OpenGL with an immediate-mode style API and optional shader support. The library follows RAII patterns and uses smart pointers throughout, producing clean, leak-free creative code.
Self-Hosting & Configuration
- macOS: use the included Xcode project or TinderBox project generator
- Windows: Visual Studio project files provided; requires VS 2019+
- Linux: build with CMake; depends on libgl, libx11, and Boost
- TinderBox GUI generates new project scaffolding with selected Cinder blocks
- Add community Cinder Blocks (plugins) for OSC, TUIO, OpenCV, and more
Key Features
- Production quality: used in commercial installations and professional work
- Consistent API: same code runs on macOS, Windows, and Linux
- CinderBlocks: modular plugin system for extending functionality
- Timeline animation: keyframe-based animation system built in
- Hot-reloading assets: live-reload shaders and resources during development
Comparison with Similar Tools
- openFrameworks — similar C++ creative toolkit; addon ecosystem is larger
- Processing — Java-based; easier to start but slower runtime
- nannou — Rust creative framework; modern GPU backend, smaller community
- SDL — lower-level multimedia library; no creative coding abstractions
- SFML — simpler C++ multimedia library; less focus on creative arts
FAQ
Q: Is Cinder still actively maintained? A: Development has slowed compared to its peak, but the community maintains it and merges contributions.
Q: Can I use Cinder for commercial projects? A: Yes. Cinder uses a BSD 2-Clause license, allowing commercial use without restrictions.
Q: What is a CinderBlock? A: A CinderBlock is a reusable library module (plugin) that integrates with the TinderBox project generator and extends Cinder with features like OpenCV, Kinect, or OSC support.
Q: Does Cinder support Vulkan or Metal? A: The mainline uses OpenGL. Community forks and branches have explored Vulkan, but it is not in the stable release.