Is this OpenGL Modern Enough?

Started by
7 comments, last by Giuseppe Pinna 5 years, 7 months ago

At the site:  http://www.opengl-tutorial.org/beginners-tutorials/tutorial-1-opening-a-window/#introduction there are two sets of tutorials for OpenGL.  One is for beginners and one is for intermediate.

In the: Forget Everything paragraph of tutorial one the article mentions that this is not "old" OpenGL.  It is modern OpenGL 3 and 4.  The question is one of assurance.  This post is to make sure that this site's knowledge is worthwhile and not outdated itself!

I'm having a really great time working with introductory of computer 3D graphics and I am very thankful,

Josheir 

 

Advertisement

Personally, I think OpenGL 3 is an era change version, akin to Direct3D 8. That was the time when API shifted from Fixed Function Pipeline to Programmable Pipeline. Everything else after that period is more like a incremental changes. So yes, the OpenGL portion itself is modern enough.

The another paradigm shift is in the DirectX 12 era, where the API gets more into the bare-metal level. OpenGL does not move into this direction, instead Vulkan is created with lower-level design. 

Personally I think if you don't need to squeeze out every bit of performance, staying in OpenGL might be a good idea. The idea of programmable pipeline is still applies in DX12 and Vulkan, so the main concept is still the same although there would be more work to do. 

http://9tawan.net/en/

Below is another great site for learning modern OpenGL. He even goes into advanced topics and even has a PDF version of the content. Also, to expand upon what @mr_tawan mentioned, they are incremental changes since version 3.3. Here is an excerpt of the getting started section:

Quote

As of today, much higher versions of OpenGL are published (at the time of writing 4.5) at which you might ask: why do I want to learn OpenGL 3.3 when OpenGL 4.5 is out? The answer to that question is relatively simple. All future versions of OpenGL starting from 3.3 basically add extra useful features to OpenGL without changing OpenGL's core mechanics; the newer versions just introduce slightly more efficient or more useful ways to accomplish the same tasks. The result is that all concepts and techniques remain the same over the modern OpenGL versions so it is perfectly valid to learn OpenGL 3.3. Whenever you're ready and/or more experienced you can easily use specific functionality from more recent OpenGL versions.

https://learnopengl.com/Getting-started/OpenGL

Offline Book: https://learnopengl.com/Offline-book

I think any OpenGL with shaders (GL 2 ES 2) is still plenty modern.. and it's forward compatible.. where as the newer versions aren't backwards compatible.
That might not mean much, but it's a smaller subset and less complicated for beginners.. but on the other hand you miss out on new features.

 

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.

Stephen M. Webb
Professional Free Software Developer

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.

http://9tawan.net/en/

Yes, OpenGL3 is pretty modern from the "use buffers and shaders only" perspective.

But OpenGL 4.5 provides a large shift in the API with Direct State Access, which removes the need for doing bind calls in many cases. Thats why I would focus on this version only (and if its too new for you even use the ARB or even the slightly quirky EXT extension for that). Slightly earlier versions also introduced texture and buffer storage extensions, which changed part of the API.

On 9/1/2018 at 11:44 AM, wintertime said:

Yes, OpenGL3 is pretty modern from the "use buffers and shaders only" perspective.

But OpenGL 4.5 provides a large shift in the API with Direct State Access, which removes the need for doing bind calls in many cases. Thats why I would focus on this version only (and if its too new for you even use the ARB or even the slightly quirky EXT extension for that). Slightly earlier versions also introduced texture and buffer storage extensions, which changed part of the API.

I Agree with wintertime, but would like to add: Both Tutorial pages (the one you've shown and the "learnopengl" suggested) are pretty valid, and while it's true that diving right away on OpenGL 4.5 would benefit you, thanks to the API changes, it is also a matter of what tutorial teach you better, as i personally learned a lot from older tutorials (thanks to books) which made it easier for me to understand the next language jump (for example I struggled less with c++ as I studied C before).
 My personal advice is: first read them both, then pick what feels better for you, as they are both valid starting points.

This topic is closed to new replies.

Advertisement