3 ms·
> Vulkan is so painfully verbose in unnecessary ways, forcing you to be explicit about everything It's my understanding that Vulkan (like Metal) has fundamenta
by brundolf 4y ago
> Vulkan is so painfully verbose in unnecessary ways, forcing you to be explicit about everything
It's my understanding that Vulkan (like Metal) has fundamentally different goals than OpenGL
OpenGL is like if the lowest-level programming language available on your OS was Java. Low-enough level to be fast-enough most of the time, and high-enough level to write application code with. When OpenGL was designed, it was common for eg. game developers to directly write OpenGL code as a part of their game
In today's world- we not only have higher-level libraries and APIs, but many eg. game developers use a game engine like Unity or Unreal and never touch the raw API. In this world, it makes sense to have that raw API be lower-level, so that the people maintaining the libraries and game engines can have more control and optimize those more deeply. Vulkan is the C to OpenGL's Java
(that's my understanding anyway; I've never been paid to do graphics programming)
- andrewmcwatters 4y agoI do graphics programming for Planimeter (https://github.com/Planimeter https://github.com/Planimeter). Even when you use game engines, you still actually have to understand some OpenGL/Vulkan/DirectX/Metal level details. If you understand one of the standards, the knowledge carries over to others. Most game engines will abstract away shader attributes, but if you're not aware of how to define them, you're probably not writing them, either. So even if you're not touching glGetAttribLocation/vertex attribute APIs, you still actually have to know how to use them. Otherwise, the assumption is that you're only ever going to be able to use basic predefined rendering information exposed from the host game engine. There's a bunch of other information like that which you have to be somewhat aware of once you step outside the bounds of "just draw this for me" with the host's default shaders.
- jjtheblunt 4y agoOpenGL was an api cleanup of SGI IrisGL, a library wrapping configuration of their custom high performance graphics hardware. When the hardware techniques subsequently became more sophisticated and in particular programmable, so called shaders were a driving force in these more abstracted apis.
- pjmlp 4y agoShaders as concept are older than IrisGL actually, one of the first famous examples. https://en.m.wikipedia.org/wiki/TMS34010 https://en.m.wikipedia.org/wiki/TMS34010
- jjtheblunt 4y agocool example!
- flohofwoe 4y agoThe yardstick Vulkan is measured against shouldn't be OpenGL but D3D11 and Metal (even though Metal and Vulkan share a lot of common ideas which have their roots in modern GPU architectures, Metal is a lot more convenient to work with than Vulkan), and D3D10/11 introduced many of those ideas to graphics programmers already (like grouping related render states into immutable state objects).
- flohofwoe 4y ago> but many eg. game developers use a game engine like Unity or Unreal and never touch the raw API 3D APIs have a lot more uses than game development. Even though I'm also coming out of the game dev world and can understand the reasons, it is a real shame that game engine rendering engineers had so much influence in the design of modern 3D APIs, because it's hard to find a community that's more imprisoned in ivory towers of their own design ;)