What's the from zero to hero path to becoming competent in Cinder?

I have a reasonable amount of experience with Processing, but honestly I don’t feel like that has given me enough of a foundation to get into Cinder and creative coding with any level of competence.

I have spent the past month diligently revising and improving my C++ competency (I finally jumped the pointers and dereferencing hurdle after 10 years of coding!)

I figure my next step is to do the same thing for OpenGL so that I can understand what is happening when I call cinder specific methods, but the world of OpenGL is vast, and I don’t want to jump down the wrong rabbit hole.

Once I have a level of competency in OpenGL, I assume it’s then finally time to take advantage of the features of Cinder. Does this sound like a good idea to you? Is there something I’m missing, or better off doing differently?

I also have good processing experience. I have not worked much with shaders but I understand little of it. OpenGL is complex but I think understanding the GPU pipeline helps also reading about other technics many programmers used to create awesome effects. while there are books out there many are not up to date and hard to follow(for me at least). This is my 6 or 7th attempt to get back to cinder and try to learn it more. One thing I really dislike about cinder is documentation.
I see lot of works done on cinder and that inspires me to learn it. unfortunately C++ and the Xcode errors take most of the time of fun. just few mins ago I was trying to make a new class and use it, my code if fine but Xcode says I have some linker issue. I don’t no I just created 2 files(.cpp and .h) if Xcode is not able to handle this sort of things it will kill my will to get good at cinder. I hope so I learn quick. Is there any way we can contribute to cinder documentations to get is more like processing with example snippets ?
GLSL programing book is also a good one to understand shaders.

While there could always be more documentation, no amount of it can prevent people who don’t know the language very well from misusing it. You say that your code was fine and that xcode was giving you errors, but looking at your issue, you’d made a very rudimentary c++ mistake and the compiler was telling you exactly what was wrong. (As much as i hate it, the compiler is never wrong). Cinder assumes a certain level of c++ proficiency in return for good performance. It doesn’t try to hold your hand into c++ from processing like, say, openFrameworks does. This is a long way of saying that a lot of cinder stuff will make more sense when your c++ is up to scratch. Speaking from personal experience (coming from AS3) I had a really tough time up front, so i worked on my c++ skills and came back, and everything started to click.


I’m also comming from AS3, just picked a little C++ later.
C++ its a pain but comes with great rewards, I’m just getting to the point to deliver simple stuff with Cinde.

If you need to sharpen your C++ I recomend one of the courses by Kate Gregory

She is wonderful and she has the idea that C++ should be taught by teaching C++ and not C. And well, that’s one of the things I love about Cinder, you can learn a lot of good C++ by just looking at the source and oter people blocks.

And if you have time to learn OpenGL just take a look at
Make the tutorials and you will see how much work Cinder does for you.

1 Like

Jesus, I set aside my entire day to have a look into learnopengl.com

4 hours in, I’ve managed to create a window and define a triangle. The gods refused to allow me to create a vertex shader, so I was never able to send my lowly triangle to the graphics card.

I feel like I’m reinventing the wheel here. Like I’m performing celestial navigation when GPS technology exists.

Are you sure this is the path to Cinder?

I’m worried I’m not going to be able to make it all the way to the promised land at this rate, :sob:.

It definitely feels like a lot of work at first but understanding how to structure vertex data, add vertex attributes, turn your vertices into triangles using indices then read and transform this data into visuals using shaders and textures is fundamental to almost all computer graphics libraries and methods (not just OpenGL). It is vital knowledge to get the most out of Cinder and would highly recommend spending some more time with it if you want to create powerful graphics applications.

I also came to Cinder from Processing and also had a similar experience as to why everything seems so much more complicated at first. There is a reason Processing exists, to abstract away the technicalities of computer graphics and gpus etc. and focus on the creative / visual process. Cinder is not just “Processing but more powerful” (in my opinion at least), what Cinder can do is leverage your knowledge of OpenGL to do amazing things at a low level but in an expressive and creative way. You do have to bring some of this knowledge to Cinder (or be prepared to learn it as you go) to get the most out of it though.

No one learnt to play the violin in 4 hours :stuck_out_tongue: anything worth doing takes time.

I’m not trying to put you off, its been awesome learning OpenGL with Cinder over the last few years and what’s great is you will find almost everything you learn transferrable to WebGL, Mobile graphics development, game engines etc.

Go for it!

1 Like

Thanks @felixfaire for the encouragement! The problem I encountered was not necessarily the slow pace, but an impossibility due to an information gap in how to actually create the vertex shader (it’s not explicitly explained in the learnopengl.com and open.gl) and when I decided to copy the example source file from tutorial over, I just got a ton of compiler errors. Gave up at that point (even though the errors were all of the same type, so a simple fix, no doubt)

I still need my hand held a little bit more than both those tutorials can provide. Can you suggest a resource that was helpful to you? What was your path? Did you study this at university? I don’t mind buying any particular book…

Welcome to the community @arif - I’ve not used Processing myself as my background is generally more technical. I think it’s commendable that you’ve set your goals on something more low-level (closer to the hardware) to further your knowledge and skillset.

I learned C++ at the university, and from simply picking up tricks and tips all over the internet as I’ve progressed. I’d say my biggest concern regarding your ambitions is biting off more than you can chew. While Cinder is, in my opinion, well thought out and designed and generally gets completely out of the way to let you do whatever you want, you’ve hit the nail on the head in regards to lacking documentation. I wish I could recommend a good book, but the one I voluntarily reviewed lacks exactly the stuff a guy like you would want - some background info on choices based in C++, rather than in Cinder.

I think my recommendation would be to complete a series of non-Cinder tutorials just to get a better grasp on C++ and OpenGL in general. Cinder helps you do so much, so much faster, but if you’re fairly clueless as to the underlying nature of the elements it gives you, I think you’ll often find yourself in a world of confusion as to why one part of your program seems to be adversely affecting another part.

Not sure if that helps…


This course in computer graphics is very accesible

Explains the basics of graphics programing and it uses javascript but is not focused on the tool but in the concetps.

1 Like

Awesome @xumo! I’m happy to take a detour in the name of doing things properly. So this will be my next move.

I’m going to start a new full time job in June, so I’m going to put everything on hold for now until my new job starts, then take this on as a weekend project.

And thanks @Gazoo, you’re right.

I’ll be back in touch in a month or so and let you guys know how I get on. :+1:

1 Like

Was browsing through old posts, as one does, and this one seems relevant as I’ve made several posts similar to it in the past…

I stumbled onto this on the openframeworks forum and it really peaked my interest. I love the format - A simple gist, with code, that explains a concept relative to oF: https://gist.github.com/roymacdonald/5a91380ca9ac2404f46f3625b5d514d1

I thought it’d be a great way to do something similar for Cinder. Maybe a GitHub repo that multiple people can contribute to? It’s my plan, though granted it has been for quite a while, to do something similar for personal reasons to help concretize my own understanding of certain topics. Not sure if anyone would be interested in contributing to this, but I’ll post when I eventually get round to actually doing it!

I know a few people, myself included a while back, attempted to port the learnopengl.com exercises to Cinder - I feel like it’d be helpful for many, myself included, if this was easily accessible / archived… In fact here’s a link to a similar thread (Implementing Learnopengl.com with Cinder? )

1 Like

@arif How did your journey go? Any tips for new beginners?