Hi all!
I was playing around with SDL3 recently, thought of using the OpenGL ES 3.0 api for my next project, just to support all platforms. I started wondering about desktop support of ES. I’ve always heard it wasn’t supported, or only by very few drivers.
After some days of research my findings are somewhat weird. First of all I cannot find any documentation about this anywhere. I used ANGLE initially, but then started noticing that I just got ES contexts directly from my driver, no ANGLE needed.
I wrote a simple test program using SDL3 release + GLAD setup for GL ES 3.0 to clear the screen. On load the program would print the vendor string. I thought maybe my desktop was giving me a context because it uses the latest driver and it’s a fairly new piece of hardware (nvidia 4060).
So I started running the program on all my machines using a fresh windows installation, I was a bit surprised:
my desktop pc using windows 11 and 4060 gave me a 3.2 context
my laptop from 5 years ago using an amd cpu and integrated graphics also gave me a 3.2 context no problem
for my final test I took out a very old win10 laptop using an integrated intel graphics chip from 12 years ago, it also gave me a 3.2 context
I’m a bit confused by these results, using process explorer I see none of the processes were loading sneaky libEGL.dll or libGLESv2.dll files. They all got the context from the native driver.
On the internet right now, people say that linux has no problem loading ES (that has also been confirmed in my experience), on windows everyone says to use ANGLE, can’t speak for MacOS.
I started looking in the SDL source code a bit, couldn’t really understand to well what is going on exactly. Also the docs are unclear regarding this topic. I was hoping to be able to shed some light on this if anyone has answers. Was I just lucky in the hardware setups I used? Feels kind of unlikely, especially the very old windows 10 laptop.
I’d love to hear anyones thoughts on this. Thanks so much!