Hacker News new | ask | show | jobs
by salojoo 463 days ago
I evaluated this vs pixi and native canvas API. In the end I decided to use native API.

Konva didn't have enough performance for my use case and pixi webgl has a limit on the number of canvases on the screen at the same time

The native API is easy to use and well documented. It also performs well enough to animate charts at 60fps on modern hw for my use case. I also like that there are no libraries to update

2 comments

What was your use case? Konva is a pretty high level abstraction, more like a lightweight interactive geometry & paint engine than a graphics API. It must've taken quite a bit of work to recreate similar functionality using native APIs?
I'm rendering charts. The native API conveniently provides the fundamentals with lines and rectangles. In addition masking and text have been very useful.

Interaction is also supported by the API with hit regions, though I've opted to do my calculations. But I agree that interaction is where Konva would probably have shined.

"pixi webgl has a limit on the number of canvases on the screen at the same time"

But that limit is very high. What were you doing?

https://www.goodboydigital.com/pixijs/bunnymark/

The amount of concurrent webgl canvases on a page is limited by browsers. I believe it's somewhere between 8-20 depending on the browser.

Hopefully webgpu would lift that limit?

I guess, the trick is to keep everything inside on stage. But why would I need more than 8 stages?

I have allmost unlimited pixi containers.

(And HTML and sometimes a ordinary canvas on top of my pixi canvas)

Those are just sprites rendered onto the same canvas, not multiple canvases.
The idea with pixi is, that you have one HTML canvas. But every sprite can also be a graphics object/canvas.
Which makes it ill-suited when you need multiple canvases. Pixijs is amazing, and I mix Pixi, Fabric and regular canvases in my application.
I still would be interested in a use case for more stages. My stagecanvas is the background of the html document. And there I have many layers with different zoomlevels etc

Everything pixi goes there. And can appear exactly on the screen when and where I want. If I ever would have a use case of a second pixi layer above my html elements layer, I can do that. So I am really curious, what else one could need?