Big Sur and OpenGL

I’m trying to get an understanding of what Big Sur means for OpenGL use on apple.

It sounds like opengl will still be there for desktops, but chatting to danoli on slack it looks like native iOS catalyst apps won’t have opengl es support.

To be honest I’m at a bit of a fork in the road. The OSX OpenGL is usable but missing some nice to have things.

I’m sure it will stick around for a while but it seems ultimately a dead tech, superseded by more modern APIs.

I don’t really care about my stuff being cross platform, but I also would like to use a framework so I dont have to do all the low level glue stuff. Just wondering what other ppl are thinking/doing in apple land.

This tweet is the best I can find re OpenGL and Big Sur with a bit of googling.

I’m considering to abandon all Apple products/platform. At Apple don’t really know what they want and every year is going worse.

I am on the same place as @Dorald.
Apple stuff just gets worse, or more properly said, it is becoming more of a toy than a professional tool.

3 Likes

I am concerned about the same. Wouldn’t be supprised, if they will try to push Metal to bind developers to their eco-system even more. I had a big hope in Vulkan, when it was announced 6 years ago… since then it still feels like an API that is still only used in rare cases. Though as Vulkan should run on ARM, it will be interessting to see what will happen with the announced ARM macs.

From my experience Apple was always kind of cooking their own soup. I remember being stuck on OpenGL 3, due to lack of drivers and support, while the rest of the world was already using OpenGL 4

Haha yeah I’m an Apple fanboy, I understand why they do what they do and I think it’s the right thing for them but that is probably another discussion. That said if I get a newer compute oriented machine I’ll probably put linux on it cause I want an nvidia gpu.

I guess what I’m really looking for is a graphics framework like oF with support for metal/vulkan.

1 Like

is deprecated but available ? basically it will work for a couple of years until apple switch completely to arm ?. I switched from mac more than a year ago and to be honest im completely happy on Linux i agree with @roymacdonald apple products are not getting better. and by now there are a lot better options out there

1 Like

I was actually interested in this as well.
Some work on supporting vulkan has alreaddy been done: Vulkan Renderer

In that thread there is also a hint on talk about integrating Google Dawn or WebGPU to support OpenGL/Vulkan/Metal and DirectX. Is there any news or desision made on what route to take there?

Also sharing a lot of these concerns! :slight_smile:

It sounds like OpenGL though is still a part of Big Sur ( though deprecated ).

Apps that want to work across iOS and Big Sur with Catalyst will have to use Metal though.

I am pretty interested in both Dawn/WebGPU and Vulkan/MoltenVK as possibilities.
I did hook up an Xcode demo where you get use Dawn with ofMesh - it is very basic but gives a sense of the API.

You can download it here:

That said there would be a lot to change in OF to completely switch away from OpenGL. Its not a 1:1 swap with other apis.

One approach would be to leave OpenGL as is but develop new renderers as addons that would support different functionality. If WebGPU ends up replacing WebGL then a WebGPU renderer would make a lot of sense. Vulkan/MoltenVK would be a little lighter in terms of libraries requirements but from @tgfrerer 's post it would be very low level and maybe not much fun to work with directly.

He actually spun his early research on Vulkan into his own creative coding framework:

4 Likes

Hey theo, thanks for sharing.

I appreciate what a big effort it would be to move from opengl. Also one of the great strengths of oF is all the addons, just makes it so easy to get up and running. I don’t think there are any easy answers here.

One of the things that has been holding me back around Vulkan/Metal is the complexity as I perceive it. Just seems like a pitb to get going, which is why I’d really like some sort of framework or abstraction layer over the lower level things.

I was actually pretty optimistic about web based stuff but then I dug into it and seems like its just as much of a mess as current graphics library space, in terms of compat/features etc.

In a nutshell seems like Safari doesn’t really support GL ES2 very well, so you can either use ES1 which is ancient, or wait till WebGPU gets a good level of features and support which will happen but isn’t quite there yet. In the mean time it seems like the focus is on getting WebGPU there to the detriment of ES2 support, so it’s another no mans land of which tech to adopt today.

Another thing about WebGPU that I think could be very cool is coupling it with WASM/WASI, which as I understand it means you’d be able to get truly cross platform binary deployment.

I had a look at that project you shared and it does seem pretty neat. I will take a closer look at dawn. Please let me know if I can help out with beta testing or something else.

Are there any plans to make OF work with Metal? Or is this definitely in the too hard basket? I’ve noticed this project which has a hardware abstraction layer. Could be useful?

The Hardware Abstraction Layer (HAL), is a thin, low-level graphics and compute layer which translates API calls to various backends, which allows for cross-platform support. The API of this layer is based on the Vulkan API, adapted to be more Rust-friendly.

Currently HAL has backends for Vulkan, DirectX 12/11, Metal, and OpenGL/OpenGL ES/WebGL.

1 Like

2 pennies on WebGPU because of its implications for cross-device VR and gaming (Fortnite on your telephone, tablet, IOT toaster). The Webkit examples I tried were also running very smoothly in-browser.

It may also be interesting to also keep an eye on Babylon.js which is one of the first to implement it. It’s an interesting state of affairs where the web grows from HyperText through to WebAssembly, threading (WebWorkers), WebComponents, W3C IO specs etc. Perhaps cool to think that all these things might meet half-way?

Edit: not forgetting TypeScript :pencil2::pencil2:

1 Like