Library / SDK
cinder/Cinder avatar
cinder/Cinder

Cinder: peer-reviewed creative coding in C++

Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.

5,539 stars963 forksC++NOASSERTION

At a glance

What is it?
Cinder is a peer-reviewed, open source C++ library for professional-quality creative coding on macOS, Windows and Linux. The last push was on 2026-03-20, and releases have been sparse: v0.9.3 in November 2025 followed v0.9.2 in 2020.
Who is it for?
Use Cinder if you write C++ and want a creative coding stack with two decades of samples, guides and reference documentation rather than a game engine. Choose openFrameworks for a comparable C++ toolkit with a different community, or Processing if a Java-based environment with a simplified editor fits your team better.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Activity is slowing. The repository last received commits 6 months ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A graphics library that calls itself peer-reviewed

Cinder describes itself as a peer-reviewed, free, open source C++ library for creative coding, aimed at professional-quality work, and that last qualifier is the differentiator within its niche. The peers in this space are well known: Processing built the genre on Java with a simplified editor, and openFrameworks offers a C++ toolkit of its own, where Cinder's identity is a C++ library with an explicitly reviewed, specification-first posture. The audience is the same mix those names serve, artists, designers and engineers building installations, data visuals and generative graphics, who want native performance and are willing to compile. The project lives at libcinder.org, with a user forum at discourse.libcinder.org, and its licence is the Modified BSD License in the COPYING file, although GitHub reports no recognized licence for the repository.

Clone recursively or the submodules are missing

Cinder depends on several submodules, and the README leads with the one clone invocation that respects that:

bash
git clone --recursive https://github.com/cinder/Cinder.git

A plain clone without --recursive produces a tree whose external dependencies are empty directories, and the failure mode shows up later at build time rather than immediately, which is worth knowing before you blame the compiler. The alternative for anyone who would rather not build from source is a set of pre-packaged downloads at libcinder.org/download, which is also the path the README suggests for people who just want to write an app. Building the library itself is a CMake affair, covered next, and it works the same way on all three supported platforms.

Two CMake lines for debug, two for release

The documented build is short enough to memorize. Debug first:

bash
cmake -B build
cmake --build build -j

Release follows the same shape with a configuration flag on each line:

bash
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j

The README states this works on macOS, Windows and Linux, which is worth the sentence because cross-platform build parity in a C++ graphics library is the exception rather than the rule; the DirectX-specific samples in the tree are the visible reminder that platform-specific paths still exist underneath. Nothing in the documented flow requires an IDE, though the proj/ directory in the repository holds project files for environments that prefer them.

A C++20 floor with named compilers for two platforms

Compiler requirements are pinned concretely: Cinder requires a C++20 compiler, with Xcode 11.3.1 or newer named for macOS and Visual C++ 2022 or newer for Windows. Linux is supported as a platform but no specific Linux toolchain is named in the README, so anyone standardizing a fleet of build machines there is choosing a compiler and verifying against the samples rather than following a documented floor. The C++20 requirement is also the practical answer to the question of whether an old project file will still build the current tree: toolchains from before that language standard's availability will not, and the two named minimums, one from Apple and one from Microsoft, are the gatekeepers. Guides and reference documentation for all of this live on the website rather than in the README.

samples/ is the real documentation

The samples directory is broad enough to serve as the curriculum, and the names sketch the library's surface. BasicApp and BasicAppMultiWindow are the starting points. ArcballDemo and CameraPersp cover 3D navigation, the BezierPath family and BSpline cover curve geometry, Extrude pushes type and shapes into 3D, and EaseGallery demonstrates the easing functions. CaptureBasic and CaptureCube work with camera input, ClipboardBasic with the system clipboard, Compass and Earthquake with sensors and live data visualization, and FallingGears is the sort of physics-flavored showcase creative coding libraries use as a front door. Platform-specific rendering appears as D3d11ImageBasic, D3d11Triangle, D3d12ImageBasic and D3d12Triangle, DirectX samples for Windows, while CairoBasic exercises Cairo 2D drawing and FlickrTestMultithreaded shows threading against a web API.

blocks/ is where the ecosystem plugs in

Beside the core, the repository's layout follows the conventions a Cinder developer learns to navigate: include/, src/ and lib/ hold the library itself, docs/ the documentation sources, test/ the test suite, and tools/ utility scripts. The directory that matters most to application developers is blocks/, the packaging unit for Cinder extensions, which is where add-on functionality lives rather than in the core tree; the name is the community's own vocabulary for a bundled, drop-in module. A proj/ directory carries the project scaffolding for IDE users, and CONTRIBUTING.md documents the process for offering changes back, which matters more than usual in a project that advertises peer review as a property of its code. The separation keeps the compiled core small while letting a project pull in only the blocks it needs.

0.9.4dev, with years between releases

Version history moves slowly here, and the numbers are honest about it. The README titles itself Cinder 0.9.4dev, the tagged releases run v0.9.3 on 2025-11-02, v0.9.2 on 2020-04-12 and v0.9.1 on 2017-03-31, so half a decade passed between the second and third tags, and the last push to the repository was on 2026-03-20, more than six months before today. That cadence is not secrecy, it is a mature library whose surface changes rarely, but anyone adopting it should calibrate expectations: questions route through the Discourse forum, documentation routes through the website's guides and reference pages, and a bug fixed upstream waits for a release cycle measured in years unless you build from master. The Modified BSD licence at least keeps forks and vendoring uncomplicated.

Editorial conclusion

Use Cinder if you write C++ and want a creative coding stack with two decades of samples, guides and reference documentation rather than a game engine. Choose openFrameworks for a comparable C++ toolkit with a different community, or Processing if a Java-based environment with a simplified editor fits your team better. Verify first that your toolchain meets the C++20 floor, Xcode 11.3.1+ on macOS or Visual C++ 2022+ on Windows, and check the forum at discourse.libcinder.org for current activity, since the repository's last push was on 2026-03-20.

Frequently asked questions

What is Cinder, the C++ library?

Cinder is a free, open source, peer-reviewed C++ library for professional-quality creative coding, used for graphics and computational design work. It supports macOS, Windows and Linux and is released under the Modified BSD License.

How do you build Cinder from source?

Clone with git clone --recursive https://github.com/cinder/Cinder.git so the submodules arrive, then run cmake -B build and cmake --build build -j for a debug build, or the Release variants with -DCMAKE_BUILD_TYPE=Release. Pre-packaged downloads are available at libcinder.org/download.

What compiler does Cinder require?

A C++20 compiler. The documentation names Xcode 11.3.1 or newer on macOS and Visual C++ 2022 or newer on Windows, and the build also works on Linux, though no specific Linux toolchain is named.

Official sources

  1. cinder/Cinder on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/cinder-cinder.svg)](https://hysenlabs.com/projects/cinder-cinder)