OpenFrameworks is another creative coding platform. It’s an open source C++ toolkit, “developed by Zach Lieberman, Theodore Watson, and Arturo Castro (“the core”), with help from the OF community.” As a result, it supports many C++ libraries. OF works great with openGL, a high level graphics language that operates on your GPU vs CPU. What this means, is that by using OpenGL, we can dictate the precise steps that something is rendered. OpenGL is a procedural API. Processing, on the other hand, is a drawing API, where we tell it what we are going to create and let the program handle the steps to create it. In Processing 2, openGL has been built into the core of the application and is based on Andres Colubri’s Android work. This has simplified using openGL with Processing. Yet, OF uses openGL for all of it’s graphics class. Most of the interaction between the two is hidden. But more importantly, you can write natively in openGL within your OF code. Shaders are created using openGL. Since OF is based in C++, this makes it easier to work with computer vision and other C++ libraries. As a result, in addition to being able to natively write to openGL, I’m transitioning to write the project in openFrameworks. As I understand, OF interfaces well with VVVV, a possible tool for projection mapping.
I’ve been reading quite a bit about shaders. I found this Processing Tutorial to be quite helpful in understanding the process and the graphics pipeline. Joshua Noble’s OF tutorial has great, as well as his book. And don’t forget about the examples folder that comes with OF. All very helpful stuff.
After tinkering for a bit, I thought it’d be wise to look directly into openGL. I’ve been looking at The GLSL Sandbox, IÑigo QuÍlez’s work, Robert Hodgin has a great write up on his work Boil Up, and Shader Toy is an awesome resource for seeing what’s possible with shaders. Dave Hoskin’s work has really got me thinking about how to move forward. Before I begin to try to port some of his code from web-GL to openGL, I’m working through some basic tutorials so I have a better foundation.