Render backend requirements

The following gives you a list of functionalities a render backend must be able to implement (normally this results in feature requirements for the underlying OS/ drawing engine).

The sum of all features is best summerized by

“You need a modern 2D vector graphics library”

Note that while this is a list of all features required to be implemented you can still to implement a backend does does not implement all of this. You must then remove all style sheet options that trigger such functionality or must live with your own fallbacks.

Coordinates

Colors

Lines

Areas

Text

SVG and image support

Using OpenGL or other 3D engines as backend

To make use of complex lines and areas you need to tesselate these into (sequences of) triangles. Also font handling requires support code.

Thus you either need a bunch of helper code to get tesselation working or use a third party helper library that does this for you. Note that even a line is not just a list of rectangles consisting of two triangles (think of line cap!).

Also there exist a number of OpenGL variants and versions and some extensions. To handle all these correctly, suggests using a wrapper library that handles all this for you, too.

Also to make win from the OpenGL performance you should not render the same map again and again but try to add tiles of data to the OpenGL scene once they appear and remove them once they disapear from the view point.

Using Vulcan situation will be even more complex, since it looks like, the code to visual effect ration in Vulcan is even worse than in OpenGL.

Possible alternative backends

This is a list of possible alternative gui libraries, frameworks etc… that could be base for new, alternative backends. There was not yet an in deep analysis, if these libraries fit all criteria, nor implies this list, that there is an actual plan.