| Better tooling. Also they accepted the world has moved on and CUDA accepted C, C++ and Fortran since day 1. Shortly thereafter they made the PTX Assembly format available and any language could easily target it for GPU execution. OpenCL got stuck in a world of C with the same runtime compilation model as GLSL. Only after loosing to CUDA they cave in and created SPIR and the SysCL C++ implementation. And they have done it again with Vulkan. While Metal and DX are object based, even the shader languages are C++ like, Vulkan is all about C. Recently they decided to adopt NVidia's C++ wrapper. |
And the reason why it's C is so that you can bind from multiple languages. DirectX doesn't have this problem because it's not plain C++, it's COM--which is designed to support bindings from multiple languages. But COM is effectively Windows only, and Vulkan needs to be platform independent. So Khronos made the correct choice here.
As you acknowledged, they also created an idiomatic C++ wrapper, so I don't see what your complaint is at all. Khronos did the correct thing every step of the way.