3 ms·
OpenGL is pretty bad, but it's not clear to me that Vulkan is really any better. Importantly, though, it gives more control and so makes it possible to build a
by smaddox 8y ago
OpenGL is pretty bad, but it's not clear to me that Vulkan is really any better. Importantly, though, it gives more control and so makes it possible to build a good API on top.
- floatboth 8y agoMore importantly, being lower-level reduces opportunities for driver bugs and inconsistencies — aren't they the main reason GL(&ES) and D3D(<12) are bad?
- gsnedders 8y agoNote that while in principle a compiler for the lower-level APIs/languages should be simpler, these are still pretty complex compilers (and given the underlying architecture changes quite often they don't necessarily end up eventually stable, given the architecture-specific code frequently becomes unmaintained).
- monocasa 8y agoThe lower level = bad drivers argument doesn't really apply to D3D. Microsoft is in control of the high level pieces of that, and the ISVs target a low level API underneath all of that. It's been that way for decades at this point.
- monocasa 8y agoVulkan is way better. It's not lower level per se, just a way better abstraction for how modern GPU hardware works as opposed to the mid/late 90s hardware that OpenGL still targets at it's core. The biggest win is how explicit it is so you won't stutter for things like shader recompiles like you do in OpenGL (I'll give you a hint, most of the time the shader isn't fully compiled by the time glLink returns). Also, Vulkan's emphasis on immutable objects really tickles my fancy in terms of programming hygiene.
- ryandrake 8y agoWhile Vulkan is a better abstraction for modern GPU hardware, I’ve always thought OpenGL better mapped to how humans think of 3D scenes, and imposes relatively little* tedious boilerplate on the developer. If I wanted to get a quick experiment up and running that just shows a model and maybe using a few shaders, I know which API I’d rather use. If I wanted to make a simple, non-AAA budget game without using Unity or Unreal, I know which API I’d rather use. Vulkan, to me, is the assembly language of graphics APIs. Few should need to drop down that far, but those who do really need to. *The exception being platform-specific window management which has always been terrible, but mostly solved by compatibility libraries.
- monocasa 8y agoHonestly, OpenGL isn't that great for how people think. IMO a scene graph API is much better in that situation. The boilerplate in Vulkan is a lot of work to get to a triangle on the screen, but once you're there it really isn't much more work to do whatever. The boilerplate isn't linear with lines of code, and honestly anything nontrivial with modern OpenGL is probably going to have more boilerplate. It's sort of an unfortunate consequence of how code architecturally should change with log10(cloc). Examples in Vulkan look verbose, but as soon as you get out of examples, it's a lot nicer. So, with a simple game, I'd probably end up using something like Vulkan too.
- pjmlp 8y agoThe world of 3D APIs would have been much different if OpenInventor was released on the same terms as OpenGL, but it wasn't. OpenGL is so raw than everyone ends up creating their own scene graph API from scratch.
- drb91 8y agoIt seems like a cleaner design to me—emphasis on a well-defined pipeline and immutable objects.