Cinder is a C++ library for programming with aesthetic intent - the sort of development often called creative coding. This includes domains like graphics, audio, video, and computational geometry. Cinder is cross-platform, with official support for macOS, Windows, Linux, iOS, and Windows UWP.

Cinder is production-proven, powerful enough to be the primary tool for professionals, but still suitable for learning and experimentation.

Cinder is released under the 2-Clause BSD License.


Standalone Applications

Platform-native windowing and event handling

Full I/O Abstraction

Seamless I/O from flat files, memory, resources and networks

Screensavers

Native macOS and Windows screensavers

C++ Core

Designed around idiomatic C++11 features such as shared_ptr

Internet I/O

Load media via HTTP and FTP natively

UI Events

Full keyboard, mouse (including scroll wheel), window, and file drag and drop

Platform-Specific APIs

Convenient access to power management, display and network adapter iteration

Multitouch

Consistent multitouch APIs for Windows 7+, iOS and macOS

XML & JSON Parsers

Built-in object oriented XML & JSON parsing API

Communication APIs

Serial port (enabling Arduino applications), OSC and TUIO

Core Classes

Perspective and orthographic cameras, triangle meshes, OBJ loading, geometric primitives

Geometry Synthesis

API's for creating and manipulating common 3D primitives.

OpenGL Core

Multisampled antialiasing, dynamic switching between full-screen & windowed modes, convenience methods for rapid development

GUI Parameters

GL-based GUI for powerful, convenient manipulation of parameters

OpenGL Classes

Full-featured classes for textures, FBOs, GLSL, VBOs, lights, materials and display lists

GLM Math Primitives

Full-featured matrix, vector and quaternion classes via industry-standard GLM library.

Geometric Primitives

Poly-bezier paths, polygons, axis-aligned bounding boxes, B-splines, least-squares B-Spline curve fitting

Utilities

Colors, random numbers, Perlin noise (up to 4D, with analytical derivatives)

Robust Image I/O

PNG, JPEG, TIFF, BMP, OpenEXR & others. Preservation of premultiplication and high dynamic range information

Powerful 2D Rasterizer via Cairo

Full featured vector renderer exports to SVG, PDF, Postscript, EPS, CoreGraphics, GDI and a pixel-based antialiasing rasterizer

2D Image Processing

High quality image resizing, edge detection, desaturation, adaptive thresholding

Fonts & Text

Font enumeration, glyph path extraction, Unicode text layout and rasterization, custom fonts via flat files or resources

High Dynamic Range Imaging

Full support for floating point HDR pixel processing in image I/O, OpenGL and software

Video Capture

Webcam support via platform native libraries on OS X, iOS and Windows

Audio I/O

Decoding WAV, MP3, Ogg Vorbis and others; encoding at 24 and 32-bit precision. Microphone input, multichannel output, and selection of non-default devices

OpenCV

Object-oriented lightweight wrapper for OpenCV 3.0

Modular Audio Nodes

Generators and effects including band-limited wavetable synthesis, buffer playback, filtering, panning, routing and delay. Precise, sample-accurate parameter interpolation

Full-Featured QuickTime

Frame extraction, native accelerated OpenGL path, audio playback, asynchronous network loading

Audio Processing

Low level, high performance cross-platform DSP tools for FFT, high quality samplerate conversion, non-blocking ringbuffer, biquad filters, and vector based math operations

Contributing

Cinder is developed through Github, and discussion is conducted primarily via its forums. Code contributions, issue reports, and support requests are welcome through these two avenues.

Authors

Cinder's original author and current lead architect is Andrew Bell. Significant portions of Cinder were derived from code coauthored with Hai Nguyen, who continues to help steward the project along with Rich Eakin, Paul Houx, and a growing, global community of users.