OpenFrameworks: Creative Programming


Have you ever come up with a great software ideas but couldn’t quite get yourself over the technical complexity of OS-ism to implement it?

Implementing a nice software takes a lot of knowledge in software facilities closely tied to the operating system, such as the messaging system, windows, menus, dialog boxes, file I/O, networking, 2D and 3D graphics.  Then one has to know the application programming interfaces (APIs) that give the developer control over these facilities.  Basically, to program a software application, you have to be more than a master of your own application, but also all these low-level facilities. The complexity multiplies if your application is targeted to run on multiple operating systems.

Now, wouldn’t it be nice if the developer only has to learn one set of APIs that will work across multiple operating systems?  Even better yet, how about if these APIs encapsulate and hide the extraneous complexity away from the developers, allowing the developers to focus on the creative part of programming?  If you desire these attributes, then welcome to OpenFrameworks (OF).

Below is a video showing select projects developed using OF.


OF is a run-time framework that enforces the top-level programming flow that looks something like this:

void main()
    while (isRunning()) 

The functions setup(), update(), draw() and shutdown() are function to be implemented by the developers.  Besides enforcing this runtime structure, OF also provides standardized API supporting 2D/3D graphics, network communication, GUI widgets, audio, video and many other features.  As a demo developer I use OF often for my projects, and can usually get a demo up and running within a week.

Here is a demo I did using OF to demonstrates contactless interaction with a smart cooktop, using Texas Instruments DLP Pico projector and 3D Time-of-Flight evaluation boards.


2 thoughts on “OpenFrameworks: Creative Programming

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s