lv2 / pugl

A minimal portable API for embeddable GUIs
https://gitlab.com/lv2/pugl/
ISC License
181 stars 35 forks source link

Vkvg Possible Contextual Backend #120

Closed mfisher31 closed 10 months ago

mfisher31 commented 10 months ago

Finally I've had a chance to get back over here to LV2 world. Have you seen this library called Vkvg? Vulkan Vector Graphics. MIT licensed and...

"The API follows the same pattern as Cairo, but new functions and original drawing mechanics may be added"

At first glance it seems to be a solid choice (at least for LVTK). Could be an easy Backend w/ Context to supply (in addition to vulkan native, not replace it). Looking at the Vulkan backend in Pugl it seems pretty minimal compared to the others.

Over the last week or so LVTK added a Cairo Backend + Demo. I'm gearing up today plug Vkvg in to LVTK and really check it out in comparison with NanoVG. If I never have to see "GL" in code ever again, I'd be fine with that :)

drobilla commented 10 months ago

There are already Vulkan backends, my hope would be that vkvg and things like it could be used without having to implement a special backend for it (backends inherently do almost nothing with Vulkan anyway since the context is set up and managed by the application).

I haven't tried it, though. I would like to split the examples out of LV2 and add more things like this, to have nice simple examples of how to use library to do UIs, but it's been a struggle to actually get to that point so far.

mfisher31 commented 10 months ago

Hmm yeah, a nice set of examples would be a lot easier, and just as useful. That's kind of nice to have the context setup outside of the back end. I didn't study the code to deep, but it looked like all there really was, is a library loader for convenience. Closing this one out, just wanted drop a quick line really!

mfisher31 commented 10 months ago

Welp... tried it. I think it could work with a little finesse and hacking. Couldn't even get an image to display, and instead non stop crashing. That could be due to misuse of the library though... Not in the mood for all that this month. hehe. Vkvg seems to have problems when the surface size needs rapidly updated (just a hunch). I think it's directly linking to the Vulkan library as well.

Think I'll just stick with Cairo for a good while so I can actually get something accomplished. I do eventually want to get some kind of Vulkan rendering working.

drobilla commented 10 months ago

I can't see in the API how one is even expected to hook it up to a surface. It seems to depend on some utility library in the API itself, which seems... odd.

Well, keep me posted anyway.

mfisher31 commented 10 months ago

Will do