Aurora Graphics Library Initial Design Discussion

Paul O'Neil redballoon36 at gmail.com
Sun Jan 19 11:47:11 PST 2014


On 01/18/2014 10:38 PM, Adam Wilson wrote:

> System         2D API   / 3D API
> Linux          X11      / OpenGL 4.3
> Android        Canvas     / OpenGL ES 3.0
> OSX            Quartz2D / OpenGL 4.3
> iOS            Quartz2D / OpenGL ES 3.0
> Windows        Direct2D / Direct3D 11
> Windows    RT     Direct2D / Direct3D 11
>
> The reason for targeting relatively new low-level API versions is that
> by the time we actually complete the bulk of the work, they won't be new
> anymore. If anyone has a suggestion for a 2D API on Linux that has the
> ubiquity of the X11 but is easier to use, please mention it! I would
> like to have a Wayland backend but that API is still very new and not
> widely adopted. I've noticed that Android and iOS seem to have many
> options for 2D graphics, none of which I've had a chance to evaluate
> rigorously, any recommendations would be appreciated.

The choice of X11 (as it is generally used now) / Wayland seems to be 
the wrong layer of abstraction to me.  While X11 has drawing 
privimitives, my understanding is that they are generally not used. 
This is one of the motivating reasons for developing Wayland. 
Applications draw their content, then send it to X to display on the 
screen.  Wayland is designed around this path.  Choosing X11/Wayland as 
a backend is fine, but it would require that there be something filling 
up the framebuffer (Cairo, OpenGL, whatever).  On the other hand, 
choosing a renderer (Cairo, OpenGL...) doesn't specify how the content 
gets to the screen, so I think there's really 2 choices here: rendering 
backend and windowing backend.  The 3D API will still need to depend on 
X11/Wayland to get a window on screen.

I have no knowledge of how input works in either X11 or Wayland.

Writing Aurora to render to some kind of buffer is future-proof enough 
against Wayland, I think.  Likely, the initial set-up and input would 
have to be rewritten, but the rest would be OK.

Caveat: I'm only ~80% sure about all of this.

My GPU only supports OpenGL 3.x... maybe it's getting old.

Paul


More information about the Digitalmars-d mailing list