OpenFrameworks is a library of classes written in the computer programming language C++ that helps to facilitate the fast and efficient coding of applications intended primarily to be used for artistic expression or experimentation. The main goal of the software toolkit is to allow an artist or programmer to create presentations or applications without having to be concerned about low-level interface functions or collections of disparate libraries. The actual openFrameworks library relies on other open source libraries for access to graphics, fonts and audio functionality, but then wraps all of the different external library commands within its own unique classes. The developers of openFrameworks maintain the code so it can be compiled on most major operating systems and some handheld devices without the need for modification.
One difference between openFrameworks and other available libraries is that it does not attempt to provide wrappers for program logic the way a game programming library might. Instead, the focus is solely on being able to easily access elements to create audio and visual presentations, and accepting input so those applications can be interactive. This targeted direction of development leads to a library that is more tightly written and leaves enough space for an experienced programmer to implement his or her own program logic.
There are a few reasons why an artist or programmer might want to use the openFrameworks library. For those who are just starting to learn programming, the library removes the need to write many lines of repetitive code by already including them in certain functions or methods. It also might be easier for some to learn openFrameworks because the naming conventions used will be consistent throughout the library, removing the requirement to be familiar with the conventions of several unrelated libraries.
The external libraries used by openFrameworks are all open source and can provide very low-level access to hardware such as graphics cards, audio cards and input and output devices. By wrapping these low-level functions, along with all of their associated necessary code, in a more cohesive and intuitive class that contains easily understood and utilized methods, low-level access becomes possible for an artist or programmer even if that person does not understand the low-level code. Accessing hardware and software directly also provides better performance and smoother animations and audio playback.
OpenFrameworks is designed to be a cross-platform library, so programs that use the code are able to be compiled on nearly any operating system and can be run on some mobile devices. This can lead to many possibilities, especially during a digital art instillation in a gallery, where it could be possible for viewers to download displayed interactive artwork to mobile devices for viewing later. Another benefit of being cross-platform is the ability to integrate unique input devices, such as touch screens, on handheld devices or three-dimensional motion-tracking cameras on game consoles.