Beginner with a few questions

  1. C because it's actually possible to learn the entire language in < 1 year, because OpenGL only requires C, because you can later add on C++ ideas if you want, and because C++ is incredibly difficult to learn and confusing as hell, whilst offering very little to you by way of additional advantage. In short - you'll get going much more quickly with C. Downsides: (1) Visual Studio doesn't support C99, but only the older, more clunky C89, so most people would suggest C++-- or basically using C with the C++ compiler so that you have access to a good visual debugger and a few of the nice C++ features when you want them.

  2. I actually suggest waiting until you come across maths concepts that you need before you learn them. Much more efficient that way. Some basic vector+matrix linear algebra concepts would be handy. Look for books/websites based on your knowledge gaps as you go. If you want a good all-purpose reference see Eric Lengel "Mathematics for 3D Game Programming and Computer Graphics", but you might also need some tutorial-style material. kahn academy + university lecture slides are usually a good bet.

if you want a /really/ nice learning source for all of this stuff check out Eric Haines' free online Udacity course https://www.udacity.com/course/interactive-3d-graphics--cs291 it IMO really nicely explains how the various maths/technical ideas work as they come up. It's WebGL with three.js but all the core concepts are there.

  1. advantage of not using it is that you are forced to learn the underlying concepts - how normals are calculated and used for lighting, how lighting equations work, how to write shaders, where performance issues lie, etc. this means that if something goes wrong, or slowly, or looks funny in an engine-level you have more insight into the problem, and possibly know how to fix it.
/r/opengl Thread