Hacker News new | past | comments | ask | show | jobs | submit login

>The APIs, although they are not easily interchangeable, use the same hardware and can often do the same things with a bit of effort.

Actually it's the other way round. GPU architectures can vary wildly especially when you include mobile GPUs which are tiling architectures. Graphics APIs are the least common denominator interface that makes targeting all of them possible.




Not at all, hence why AAA game engines have all been based of plugin architecture for their backends, which allows them to take the best advantage of each hardware, no need for least common denominator interface.

Those that try to target everything with a single API are fooling themselves, hence why in the end they all end up with extension spaghetti and multiple code paths, while pretending to still use a single API.


care to elaborate even further?


Sure, OpenGL is portable and works everywhere, right?

Well, first of all OpenGL and OpenGL ES aren't the same thing, so depending on the versions, the set of APIs differ, already there you have some set of alternative code paths.

Then some features are only available as extensions, so you need to query for them, and then programm accordingly what is available.

Some hardware features have different extensions per vendor for the same hardware capability, so yet another execution path.

The shader compilers are quite different across vendors, some more strict than others, or different set of GLSL extensions, so yet another execution path.

Finally, even when everything works, there are driver or hardware bugs to work around, yet another execution path.

In the end it is OpenGL, portable everywhere, yet the engine looks like it is using multiple kinds of APIs just to work around every kind of issue.

Naturally having a rotating cube available everywhere is easy, the problem is having a proper engine with Unreal like capabilities (we are talking about AAA here).


When you're learning instead of making something for production, it may be wise to focus on a single platform (whether it be Windows, Linux, or mobile) and start from there.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: