The current framework has gone through many versions over the years. I remember starting work on my own framework when I was 14 (that was 30 years ago) so I can certainly say I’ve used a variety of graphics libraries. Before graphics libraries, there was only software rendering. I recall implementing my very first GPU-based rendering using DirectX 7, followed a few years later by Direct3D 8 (I was only 17). Back then, there wasn't a proper framework, just a codebase. When I began developing a full-fledged framework, I remember using OpenGL starting with version 1.5 and eventually supporting up to version 2.0 in 2010, which is where I wrote my first shader-based rendering engine. Then, for work-related reasons, I abandoned everything in 2012, only to pick it up again in 2015 by implementing a completely new framework. As before, the initial rendering engine was software-based (this time using the Cairo libraries) but limited to 2D graphics. Subsequently, I designed a new 3D engine, building it from the ground up using Vulkan libraries, and continued developing it over the years alongside the framework's latest versions; at that point, I believed I had left OpenGL behind for good. However, after porting the entire framework to Emscripten and getting TMD Viewer running in a web browser, I needed a rendering engine capable of delivering 60 fps with hardware decoding. Since Vulkan isn't available in web browsers, and WebGPU would have required a shader language incompatible with my existing GLSL-based code, I asked myself: why not go back to supporting OpenGL? So, that is exactly what I did. I chose OpenGL 4.3 for the desktop because it is compatible with the vast majority of virtual machines. The desktop version proved useful for developing initial OpenGL support with modern features, allowing me to then scale down specific features when implementing WebGL 2.0, which is based on OpenGL ES 3.0. The most amazing part was seeing the same 3D applications run with identical visuals using a different library, thanks to that abstraction layer. It was also fantastic to see these 3D applications running in a web browser for the very first time. Supporting OpenGL could serve also as an excellent foundation for supporting legacy systems from the past and virtual machines.
TextureMind Framework – Progress #33 – OpenGL 4.3 and WebGL 2.0 support
Leave a reply