Hi,
I'm using the 2d vector graphics library Skia (with its OpenGL backend) in my 
Qt 5 project, but I have ran into a bug that I haven't been able to solve . To 
use Skia in my project, I've tried multiple different ways (using 
QQuickFramebufferObject, QSGRenderNode and also directly connecting to 
QQuickWindow::beforeRendering and other signals to draw my custom OpenGL code).
However, with all the different ways I've tried, the result is that Qt Quick 
Scene Graph rendering becomes broken introducing artefacts such as blurry and 
pixelated text and icons. It seems that Skia messes up with the OpenGL state 
and this in turn breaks the rendering of Qt Quick items (I'm already using 
QQuickWindow::resetOpenGLState).
I'm not exactly sure why this happens, but I've also tried isolating Skia in a 
separate OpenGL context (as demonstrated here 
https://doc.qt.io/qt-5/qtquick-scenegraph-textureinthread-example.html) and as 
expected the problem goes away.

I've create a small GitHub repository here 
https://github.com/daljit97/SkiaQtBug which shows the bug (since Skia is a pain 
to build I've included a prebuilt binary for x64 Windows, so you should be able 
to just open the project in Qt Creator and run it right away). This small 
example follows this tutorial at the following link 
https://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html and shows 
how mixing Skia rendering calls and native Qt Quick results in blurry and 
pixelated Text elements.
Also if you run the example with Qt 6, then the problem get slightly better (no 
more pixelated text) but other rendering artefacts are introduced.

Has anyone got any idea on what's going on?

Best,
Daljit
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to