I want to start Computer Graphics with OpenGL, at least that was my initial idea.
I googled a little bit and found some posts stateting that OpenGL won’t be continued, it will be replaced with Vulkan.
Is that true?
What is the future of OpenGL? Now there is version 4.6, will there be 4.7 or 5?
Does it make sense to start with OpenGL, as I intented, or better to start with Vulkan, as there is no future for OpenGL?
The conceptual differences between OpenGL and Vulkan are not that many. And especially if you’re new to programming in general, starting with Vulkan requires that you have an understanding of a bunch of things that don’t really deal with graphics as a concept.
The graphical concepts you learn when using OpenGL are transferable to Vulkan. So focus on the concepts using the easy API. Once you have those concepts under your belt, you can move to Vulkan.
If you’re an experienced programmer in your language of choice who has detailed knowledge of multithreaded systems, synchronization, and several other low-level concepts, starting with Vulkan can be easier in some regards. But if you’re not experienced, it’s best to just pick up a decent graphics book that uses OpenGL.
There is one addendum I would like to make.
Now that hardware has resumed adding meaningful new features (for a good 6 years or so, hardware wasn’t really adding new functionality, just more and better elements of what we already had), there is something of an emerging difference between the APIs. In fact, one of the reasons why it became so important to create APIs like Vulkan or D3D12 is because the structure of their APIs allows hardware to better express itself.
And that’s starting to become apparent. Let’s consider two new-ish hardware features.
Mesh shaders are something that conceptually works within the OpenGL rendering paradigm. They replace the vertex pipeline with a different vertex pipeline. But broadly speaking, it doesn’t fundamentally change the nature of rendering, so it still works with OpenGL.
That is not the case for ray tracing. This API doesn’t just create a bunch of new shader stages; it fundamentally requires the structure of a command-buffer API like Vulkan. It simply cannot work under OpenGL.
Some future hardware features may be compatible with GL (like mesh shaders); others may not (like ray tracing). But all of them will work on Vulkan.
So while it’s generally true that you can learn the same graphical rendering concepts under OpenGL and Vulkan, this will become increasingly less true as time goes on. So for the time being, feel free to learn OpenGL as a stepping stone to Vulkan. But that time is not infinite.