@MartinW
Congratulations on getting Raylib working on AmigaOS (albeit minus sound at this stage)! Nicely done.
MY apologies for my contribution to the confusing array of libraries. I'll do my best to outline how it all fits together.
Newlib/Clib2/Afxgroup's New Clib2Newlib and clib2 are C runtime libraries that implement the C standard library. Clib2 gets statically compiled into your binary, while newlib relies on a newlib.library. This results in smaller binary files, because the bulk of code is in a shared library.
AFAIK, the intention was for newlib to become the *only* C runtime library. Unfortunately, that never happened. I'm not sure exactly why, but clib2 remained available, and there were some features that newlib missed (and vice versa).
Fast-forward by a decade or so, and both newlib and clib2 are missing features people want to aid porting software from the posix world. Some argue that POSIX compliance is beyond the scope of the C runtime libraries, but both newlib and clib2 already had some POSIX functionality. The newlib.library is closed source, so only Hyperion can update it. Those updates are rather slow to happen. The AmigaOS clib2 project suffered from having to support older versions of AmigaOS as well as OS4.
So, afxgroup created his own fork of clib2, made it OS4 only, and added the features that he and others needed.
Hence, we now have 3 C runtime libraries. They're incompatible with one another, so if you use newlib, then you need all static link libraries to be compiled with newlib as well.
Yes, it's more complicated than needed, but it's where we're at. I really wish we could get newlib brought up to standard, and make that *the* C runtime library that's usable for everything.
GL4ES Ogles2.library MiniGL Warp3D Nova, and Warp3DWarp3D is the original 3D API for AmigaOS, and was based on the capabilities of 3D graphics cards of the time (e.g., no support for shaders or even hardware accelerated Transformation, Clipping, and Lighting (TCL)). MiniGL (and StormMESA) provided OpenGL 1.3ish compatibility. Performance was hampered by the lack of TCL and other problems.
Warp3D Nova is a (relatively) modern shader based 3D graphics system. It's incompatible with its namesake (Warp3D) out of necessity. There was no way to add shaders to the old API in an efficient manner. Instead, it's design is based on how modern GPUs work (with some inspiration drawn from Vulkan, and the original Warp3D).
Obviously, we need OpenGL compatibility. To get there faster, we decided the best path forward was to implement the OpenGL ES 2/3 API. Hence, the ogles2.library. OpenGL ES ditches a whole lot of old functionality that you shouldn't be using any more, making it much more doable. The plan was to use something like the angle library to get full desktop OpenGL compatibility on top of the ogles2.library. Kas1e found that the GL4ES project was a better fit.
What about backward compatibility for old software? I wrote
NovaBridge for that. It provides the backward compatibility layer to let old MiniGL/Warp3D software work on newer graphics cards.
Unfortunately, NovaBridge is currently available as a separate purchase, so it isn't bundled in on all machines with Warp3D Nova capable hardware. So, the confusion I hoped to eliminate with NovaBridge remains. That should disappear in future, when it comes bundled with all new machines.
Development-wise, it's a bit messy because GL4ES is a separate download. Ideally, it would be bundled in with the ogles2.library and Warp3D Nova's SDKs, along with clear documentation.
In brief, here's how the libraries fit together:
Modern Shader Based Graphics:
GL4ES ========> ogles2.library ====> Warp3D Nova (drivers) ====> modern hardware (e.g., RadeonHD/RX)
Desktop OpenGL OpenGL ES 2/3 ^
|
|
W3D_NovaBridge (compatibility layer)
Legacy Fixed-Pipeline Graphics: |
|
MiniGL ----> Warp3D ---------+-----> Warp3D driver ----> legacy hardware (e.g., Radeon 9xxx)
OpenGL ~1.3
NOTE: You don't have to use GL4ES. If the ogles2.library has everything you need, then use it directly. You could even use Warp3D Nova directly if you wanted.
The legacy graphics (lower half) should fade away over time.
I hope that helps clarify things.
Hans