Hacker News new | ask | show | jobs
by jcelerier 603 days ago
QRhi + Qt3D & / QtQuick3D is pretty much the exact same goal than pygfx with a different implementation: https://github.com/qt/qtbase/tree/dev/src/gui/rhi ; https://doc.qt.io/qt-6/qt3d-index.html ; https://doc.qt.io/qt-6/qtquick3d-index.html ; QRhi itself pretty much sits at the "wgpu" abstraction layer.

I've been using it for 4-ish years now in https://ossia.io (just the RHI part)

Pros:

- Integrates with Qt (of course).

- Really really easy API compared to the average C++ API.

- Works absolutely everywhere.

- Many provided examples: https://github.com/qt/qtbase/tree/dev/tests/manual/rhi

- Shader language is SPIRV-compatible GLSL 4.x thus it makes it fairly trivial to import existing GL shaders (one of my requirements was support for https://editor.isf.video shaders).

Cons:

- Was developed before Vulkan Dynamic Rendering was introduced so the whole API is centered around the messy renderpass thing which while powerful is sometimes a bit more tedious than necessary when your focus is desktop app development. However, Qt also has a huge focus on embedded so it makes sense to keep the API this way.

- Most likely there are some unnecessary buffer copies here and there compared to doing things raw.

- Does not abstract many texture formats. For instance still no support for YUV textures e.g. VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM and friends :'(