Answer the question
In order to leave comments, you need to log in
Opengl 4.* or vulkan?
Does it make sense to learn opengl if vulkan has been released a long time ago, which, in theory, is many times better? Wikipedia says that it is not backwards compatible with opengl, are there many fundamental differences? Before that, I played with the old opengl, without shaders and with directX9, i.e. I know some basics. And what resources can you advise (possible in English) for studying? I know how to google, but I would like to hear the reasoned opinion of people.
Answer the question
In order to leave comments, you need to log in
These are generally different things.
It is important to distinguish between learning APIs and learning technology . If you want to learn just the API, learn anything, because you will notice the difference only when you understand the basics, the base .
OpenGL was designed when there were other hardware architectures. Multiprocessing was only in theory, and was considered the lot of supercomputers and unnecessary for user PCs.
An analogy can be drawn: OpenGL == C++, Vulkan == asynchronous Assembler + hardware threads. For example, in C ++ there are quite a lot of architectural jambs that are trying to solve with new standards, declaring which things are obsolete, because they are conceptually incorrect and do not fit modern realities.
But, at the same time, you can write the same thing in assembler, but you need to understand much better how the processor and OS work, write synchronization primitives yourself, etc.
A volcano was created for the same purposes. To program on it, you need to know all the intricacies of the hardware, read heaps of papers from the same Nvidia, explore, come up with new features for modern architectures from scratch, which were originally invented in OpenGL, but for old hardware.
That is, on the Volcano you need to do more with your hands, optimize more. Instead of a single OpenGL function call, the volcano will have to write several hundred lines. At the same time, if you do not understand any one subtlety, you will make what was originally well implemented in OpenGL less efficient. In addition, OpenGL can throw errors when you mess up somewhere. The volcano does not throw them out, it relies on the fact that you already know how to use it. In the same way that assembler simply changes the state of registers, it has no concept of an error. How to interpret these registers depends on how well the developer read the processor manual.
In the end, I would answer like this:
If you deal with graphics as a science, go wild a la Carmack as a student with his engines, research something, write some ingenious algorithms, defend dissertations on this, publish them, tell later at a conference how you did a great job with some urgent task, increased productivity, then learn Vulkan. Vulkan is about graphics as a technology, about performance, about engineering and architectural design, and not about API and programming itself. With a volcano, you will have to sit more with diagrams, documentation and build an architecture, come up with methods for interacting parts of this architecture, synchronizing states, rather than writing code.
If you write simple applied things that need to show some kind of graphics, then learn OpenGL. Here you only learn the API, agreeing with a ready-made, slightly outdated, architectural design.
If you want to write games that are not world class, then learn ready-made engines, Unity or Unreal. They already support Vulkan for you, thought out the API and architecture for you.
Of course OpenGL, everyone supports it. What devices support Vulkan? Yes, potentially those that support OpenGL 4.x and above, but in practice, firewood is needed for them, and when they will appear is a big question.
Look for the C:\Program Files (x86)\VulkanRT folder and you will understand that you do not need to wait for the drivers, you already have them. What is API is said directly Vulkan (API) . It also says that "On July 11, 2016, Id Software released a patch for the game Doom (2016), in which the rendering of graphics and the calculation of physical interactions were redone from OpenGL to Vulkan."
I would recommend not to use a volcano for domestic purposes. The volcano itself as an API is not particularly complex, and the whole difficulty is that building reliable, uncomplicated and fast programs requires a lot of experience not only in graphics, but also in many other things, such as multi-threaded programming, experience in building application architecture, division into modules supported in the future. That is, you will spend a lot of effort and time to write a home game on the volcano. On the other hand, it will provide an opportunity to just learn all this. In my experience, I’ll say that for myself I decided not to use the volcano directly, but to use the BGFX proxy library, it can render through the Vulkan API and not only. (unlike it is Opengl, where it is presented on the Web as the little brother of OpenglES - WebGL). I consider BGFX to be an ideal option for teaching visualization in 3D through the use of a graphics pipeline, and for creating games (together with GLFW or SDL2). I emphasize that this is not an engine, it is a rendering library, but it is much easier to work with than with Vulkan.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question