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