4 hours ago, Bregma said:
Another data point to consider is that OpenGL 3 is not API-compatible with OpenGL ES. OpenGL ES is considerably more widespread: it's used on mobile and embedded devices rather than Linux PCs and a few Microsoft Windows PCs. OpenGL ES 3 is pretty much a proper subset of OpenGL 4, so your best bet for a "modern" OpenGL is to learn OpenGL ES 3 -- but that said, starting with OpenGL 3 tutorials will not hurt because it sets up the programmable-pipeline concept. It's mostly that the API to set up the data transfer between CPU and GPU, and how the shader receives and processes those data, became much more generic with the newer versions.
If I'm not mistaken, one of the OpenGL 4 and GLES 3 releases are to consolidate the 2 api. GLES3 became a proper subset of GL4 since then. I can't recall what release it was, probably 4.0 and 3.2 ....
Anyway when I was learning GLES (which I quit eventually, had no use of it back then), I find coding GLES on the PC a bit painful, especially the project setup (If I'm not mistaken, I had to install AMD's SDK). I had more success in OpenGL, as it's shipped with the VC++. Writing GLES to run on the mobile was proabably easier, but I also find debugging on the mobile phone a bit annoying as well (it reminds me of my NintendoDS day....).
The situation might have changed since then though. You might be able to create a GLES context with breeze. I don't know. Been away from coding the graphics api directly for quite a while now.