Krasjet / imgui_juce

JUCE backend for Dear ImGui
GNU Lesser General Public License v3.0
37 stars 2 forks source link

Would a Metal implementation for Mac be possible? #1

Closed stephenberry closed 1 year ago

stephenberry commented 1 year ago

OpenGL is deprecated on Mac. Do you think it would be possible to do this with Imgui's Metal implementation?

Krasjet commented 1 year ago

The JUCE backend doesn't rely on a particular graphics backend. ImGui requires two backends to work, one for windowing (JUCE, GLFW, etc), one for graphics (OpenGL, Metal, etc.). The two are independent, so technically you could use any graphics backend with JUCE backend.

However, I don't think JUCE currently support custom rendering with Metal. You can probably hack around CoreGraphicsMetalLayerRenderer to issue your own draw commands, but the support is not as mature as OpenGL.

I personally wouldn't worry too much about OpenGL being removed from macOS. It's the only cross-platform graphics solution. Removing it would break almost all audio plugins that use hardware-accelerated rendering. There has to be a compatibility layer somewhere. There is already ANGLE and MoltenGL that translate OpenGL calls to Metal. JUCE has to come up with a solution if it ever comes. Because ImGui is platform-agnostic, it's only a matter of switching the backend in the end.

stephenberry commented 1 year ago

Thanks so much for your thoughts and suggestions. I'll look at using this OpenGL solution for now.