[Interest] 2D painting toggle between raster and opengl. What is the advised method?

Mark Gaiser markg85 at gmail.com
Sat Nov 8 17:45:43 CET 2014


On Sat, Nov 8, 2014 at 5:34 PM, Marian Beermann <public at enkore.de> wrote:
> Depending on the platform requirements it might be possible to always
> use OpenGL rendering in the application and back it up with a software
> rasterizer (e.g. llvmpipe).
>
> (Just by the way: even old and crappy (perfomance-wise) GPUs like old
> Intel GMAs or PowerVRs in ARM SoCs are always faster than drawing on the
> CPU. I also think there are hardly any devices around that do not
> support at least fixed-function OpenGL.)
>
> On 11/08/2014 05:28 PM, Mark Gaiser wrote:
>> Hi,
>>
>> The requirement are simple: 2D painting needs to be possible and i
>> want to toggle between raster and OpenGL. QML or _depending_ on the
>> GPU is out of the question. Animations are also not required. Things
>> that are required are zoomnig controls, selecting drawn objects and
>> rendering has to be high performance. It must be capable of drawing a
>> _lot_ of primitive objects (think about numbers between 100.000 and 1
>> million).
>>
>> Given those requirements i know of two different ways to accomplish
>> the same result.
>>
>> 1. QWidget and QOpenGLWidget (new in Qt 5.4). They would both use
>> QPainter. Basically the 2dpainting example [1] that is provided with
>> Qt.
>>
>> 2. Using QGraphicsView. It defaults to raster based painting and can
>> be accelerated by calling setViewport(new QOpenGLWidget) on it. This
>> can be done in basically all of the GraphicsView examples [2].
>>
>> Those are the options that i know of where it's possible to toggle
>> between hardware and software rendering. Is this it or are there even
>> more options out there in the Qt world?
>>
>> It's unclear to me which of the possible options is the advised way to
>> go when drawing something in 2D. Therefore my question: which one
>> would be the advised way to use given the requirements said earlier?
>>
>> [1] https://qt.gitorious.org/qt/qt/source/examples/opengl/2dpainting
>> [2] https://qt.gitorious.org/qt/qt/source/examples/graphicsview

Please keep the list in.

Sorry for not mentioning the target platform. That would be the
Windows desktop family, x86 and x64. It's fine if it runs on Linux,
but that isn't the target operating system.
OpenGL on the windows desktop is a bit of a annoyance. Besides that,
this application also has to work well in virtual environments where
depending on OpenGL or any GPU is really not that well supported. Thus
software rendering is a must have. Hardware rendering where possible.

Note beforehand. I know about ANGLE and it's not an option in this case.



More information about the Interest mailing list