An API (Application Programming Interface) is a set of subroutine definitions, communication protocols, and tools that are used for building software.
Open Graphics Library (OpenGL) is a cross-language, cross-platform API for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU). This is used to achieve hardware-accelerated rendering.
The Vulkan API is a low-overhead, cross-platform 3D graphics and compute API. This API targets high-performance real=time 3D graphics applications such as video games and interactive media across all platforms.
This cross-platform API could drastically improve 3D performance on certain devices, especially the multi-core application processors that are used in billions of smartphones and tablets.
The Vulkan and OpenGL are actually related to each other. They have the same developer as well.
Vulkan is the new generation, open standard API for high-efficiency access to graphics and compute on modern GPUs. Previously referred to as the Next Generation OpenGL Initiative, Vulkan provides applications direct control over GPU acceleration for maximized performance and predictability.
The new API has a new name because the new developers intend to make a clean break from existing OpenGL standards. Vulkan’s advantages for game developers are centered around how much more control they provide, a few of the advantages of Vulkan over OpenGL are as follows:
a) The API aims for the generation of command buffers over multiple threads and the simultaneous processing of the same to a command pipeline. Most of the high-profile and high-performance software that are built on OpenGL perform along the lines of the same principle. Because of the API taking it upon itself to exhibit this behavior, the developers need not do the work of maintaining the framework, and even if they do, they can do so with little effort.
b) The thread and memory management is taken care of by the application itself and the driver need not interfere. This means that the API’s behavior can be tailored to suit the game’s needs.
c) There is better tools integration in Vulkan than OpenGL because Validation and diagnostics layers can be independently enabled.
d) There is no hard API differential between mobile and desktop versions, which will make the porting of cross-platform games easier.
OpenGL still has the potential to hold its head high when weighed against Vulkan in terms of draw calls per second, and also when it comes to general driver overhead.
a) Recent OpenGL extensions manage to remove a lot of driver overhead. It does so by making everything bindless (e.g. ARB_direct_state_access (4.5 core), ARB_bindless_texture, ...).
b) The use of persistent mapping (ARB_buffer_storage, core in 4.4) ensures that buffer memory can be accessed directly by the CPU, this makes sure that the synchronization it has with GPU is also explicit, this is very similar to what can be found in Vulkan.
c) There is news of other extensions that will make OpenGL keep its lot in the game. Future extensions such as NV_command_list are very likely to provide OpenGL the same “GPU feeding paradigm” as Vulkan.