What's the different between D3D and Vulkan?

What’s the different between D3D and Vulkan?


In general, in the last 10 years there has been a large movement towards more low level graphics (and compute) APIs as these give the application developer much more control about the graphics hardware. Examples of these next generation low level APIs are Vulkan, DirectX12 and Apple’s Metal API.

DX12 runs on Windows 10 and XBOX only, while Vulkan is completely platform-agnostic. Vulkan itself runs on Windows, Linux, Android, Nintendo Switch and Google Stadia. Vulkan can also run on MacOS and iOS when using MoltenVK as abstraction layer.

There are surely a lot more differences when comparing these APIs further, so here’s my list of further links:


best regards,

1 Like

Thank you very much.

The difference between Direct3D 12 and Vulkan:

  1. Direct3D12 API doesn’t have the following objects FrameBuffer, DescriptorSet, DescriptorSetLayout, Semaphores - needn’t create these objects using vkCreate* functions
  2. Direct3D12 API can submit ID3D12GraphicsCommandList from current thread, but for Vulkan we need a Secondary Command Buffer is summited in primary command Buffer using vkCmdExecuteCommands

I post this video to every beginner, so please watch this: DD2018: Adam Sawicki - Porting your engine to Vulkan or DX12 - YouTube

In general please make sure also understand the main differences between the older APIs like OpenGL and DX9 and new generation APIs like Vulkan and DX12.

I think there are two other important differences we forgot to mention:

  • Vulkan API is being developed by a collaboration of many companies while DirectX is being developed by Microsoft only.
  • Many things in the Vulkan ecosystem are open source (even some drivers for example)