[Development] New repository request for an accelerated 2D drawing module
Volker Hilsheimer
volker.hilsheimer at qt.io
Wed Nov 5 09:58:39 CET 2025
> On 4 Nov 2025, at 11:41, Laszlo Agocs via Development <development at qt-project.org> wrote:
>
> Hello,
> I would like to request a new repository for a compact, QRhi-based 2D painter based on QNanoPainter (https://github.com/QUItCoding/qnanopainter) by Kaj.
> This is not intended to replace QPainter, but rather to provide a compact API that is more suitable to be layered on top of QRhi.
> The main goals are to
> use this in Qt Graphs for a high-performance Charts implementation,
> to enable creating a better Canvas implementation for Qt Quick,
> to investigate building a paint engine on top of this for accelerating widgets,
> and to offer a QQuickPaintedItem variant that is always hardware accelerated, for integrating imperative 2D drawing into Qt Quick scenes.
> Name of the repository: qt/qtcompactpainter
> Responsible person: Kaj Grönholm, kagro, kaj.gronholm at qt.io
> Description: Accelerated 2D painting solution for Qt Quick and QRhi-based render targets
> Best regards,
> Laszlo and Kaj
I hope the hive mind here can find a better name for this than “Compact”, which I think is a rather subjective term that doesn’t say much. It’s faster - for certain use cases; it will have some API limitations compared to QPainter; it might or might not be smaller in terms of binary size and/or runtime footprint. It will grow over time, and then become less compact.
We don’t want to use QRhi* for this family of classes and types, because that’s a very low-level namespace.
One term that has been established for this kind of rendering is “Immediate”. While using that directly might be a bit too much of a nod towards ImGui (and generally the expectation that the framework doesn’t manage any state), a decent synonym for that is perhaps “Direct” (which is then again a bit close to Microsoft terminology…). Both indicate that the rendering bypasses (or doesn’t bother with) the scene graph data structures.
The module’s name could then perhaps be Qt DirectPainting, with a family of related classes, including a QDirectPainter?
Volker
More information about the Development
mailing list