Is openFrameworks good to learn C++?

Hey Guys,

I never used openFrameworks before, but I habe some years of experience in vvvv, so creative coding is not a new topic for me. I am also familiar with C# and scripting in unity, so writing code isnt new to me as well. Now I want to learn C++ to dive deeper into computer graphics and wanted to know if openFrameworks is a good place to learn C++.
For me its always helpful for my motivation to have like a graphical result instead of just text in a console window. But the question is: Will I learn proper C++ when using it in openFrameworks or is it just like a subset of C++ or do I need to use some “specific-to-openframeworks-techniques” like in some other scripting languages where I can not use all the possibilities of the actual language?

thanks for your help :slight_smile:

As a below average programmer myself who’s scared of C++ (pointers, templates, lambdas), coming from a long history of coding “boring” apps in Visual Basic, Openframeworks was the sweetest thing ever. Never looked back ever since. It’s not just about the flexibility and in-demand power offered by the addons and OF itself thru C++, it’s the community of hackers who do love to help out that made the transition easy for me.

Though OF may not be perfect in some parts (GLSL ES is still a pain for me), the easy to understand documentation and open nature of it invites you to do whatever the heck you want. You can even modify the OF core itself if you want to. There are even language bindings available thru addons like ofxLua and more.

Have a lot of fun on your C++ journey


oF is a great way to learn C++ IMO!

You can definitely use C++ to all its full extent, I think creative coding frameworks are great ways to learn because you can get immediate visual feedback for you code, which can be quite abstract (no pun intended).


I would say that yes, as it helps you getting a lot of the boring stuff done so you can (creating windows, dealing with low level openGL, etc) concentrate on coding interesting things.

Absolutely yes. OF is written on C++ so you can use all of the C++ features. It is not a subset, or subscript of C++, it is just C++ (with all its good and bad things). This is why there are so many addons and it is really easy to make new ones integrating existing libraries written in C++.
There are specific patterns and design strategies used, so you have to learn a how to use OF, but it would be the same thing if you try to use any other framework or library.

I recommend you to read the ofBook, it will both guide you on how to use OF as well as C++. And if you have any doubt search this forum and/or just ask :slight_smile:

Also, you might find useful this video tutorials


Yeah, I think openFrameworks would be great for beginner C++ programmers as well as for experts.

It’s wonderful in that it gives you useful and mostly-easy-to-use methods for doing audio/visual things, wrapped in a useful framework that means you can create working programs that do things and give you visible results right away.

In fact I’d say it’s the best framework for learning C++ that I know of, at least for my interests. Also my favorite platform for making computer games and apps and programs.

OF has been fantastic for learning C++. It’s very unique - I think a massive benefit is to be able to get stuck in and code-wildly, then iteratively go deeper while trying new things.

A few (opinionated) bits of advice I would shout to myself if I had a time machine would be:

Get familiar with raw pointers and refs thru trial-and-error, debugging breakpoints etc. OF uses lots of smart pointers, ie. shared_ptr, but I found these more of a headache in the long term, so avoid them if possible. It’s like the jQuery of memory-management - does everything and the kitchen sink, but you probably would’ve been fine just tidying up your pointers in a ~ destructor.

Singleton patterns for object-orientated coding, and keeping things organised.

Reading through closely to feel out how linking works - headers, dylibs, folder locations, symlinks.

Have fun!