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.
I think this is correct, but only if we’re talking about learning all features available on the newest hardware.
I tried to actually start with Vulkan, because modern OpenGL, with all extensions like the direct access to buffers etc, was confusing to me and I liked the Vulkan documentation much more (and still do, it’s certainly better than the old Refpages that haven’t been updated since 4.5). However, it turns out it’s still very difficult to learn all that from scratch, when really you first want to understand some part of it.
So I returned to OpenGL, but not the newest, but the oldest that’s still relevant: GL 2.0, or rather the common subset of GL 2 and modern GL (I use the GL 4.5 ref pages as a reference for that, and also GL ES 2.0, since that also doesn’t have the fixed functions; I document my progress in understanding here if you’re interested:
I do think that in this way, that there isn’t really a time limit of how long it will stay relevant, but more a tax on how much effort you want to put in using newer features, when you first want to understand how shaders, textures etc. even work in the first place, and how important those are to move to a new API
Or a shorter answer to the original question:
- OpenGL will probably not get any new features, but it’s not, from my view, abandoned or replaced. Hardware manufacturers will continue making games and applications in GL 2+ run better, but there are a few features you will miss out on, but unless you need that optimization it’s all fine.
That’s, as it seems, however only true of the part that’s retained in the core profile, older GL 1.X functionality will probably really be abandoned at some point (iirc Apple already did so)
This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.