On Sunday, 19 January 2014 at 03:38:30 UTC, Adam Wilson wrote:
Hello Everyone,
Based on the previous thread I think we have enough to start
laying out the design and writing code for Aurora.
The choice that I would like to clarify is that Aurora will be
a retained mode API. I understand that this is not the best
choice for speed and that not everyone will be happy with this
choice. However, retained mode API's are typically much
higher-level, which will make it easier for developers that are
unfamiliar with writing graphics code to express their intent.
Given the stated goal of Aurora I feel that this is the best
choice.
The next is that Aurora will have a pluggable backend rendering
system. This will allow us to support any rendering system
capable of meeting the requirements of Aurora's frontend. And
when combined with the retained mode API you could, in theory,
swap renders on the fly. Although I wouldn't want to be the
first one try it!
Since Aurora has a pluggable backend for rendering I feel that
it will be prudent to use the low-level API's that are best
suited to each platform. This will Aurora to support each
platform as best as possible. As I currently can tell the
following list represents
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.
As has been widely suggested, Aurora will be split into a
number of packages that are loosely coupled. In theory this
would allow us to pull the more broadly applicable packages in
to Phobos as they mature and then depend on those in Aurora.
The tentative list of packages is as follows:
aurora.application
aurora.primitives
aurora.graphics2d
aurora.graphics3d
aurora.text
aurora.image
aurora.math
aurora.animation
Hopefully, this break down will allow the user to pull in only
what they need for their project, without confusing them with
choice. Naming suggestions are welcomed!
Finally, I've have set up a GitHub organization for Aurora,
which can be accessed at: https://github.com/auroragraphics I
haven't posted any code yet, but I am working on
aurora.application for Windows. The aurora repo is the master
repo and all other package repo's are submodules of it. The
aurora repo will consist primarily of the scripts required to
build Aurora. This is to make it easier for the newbies to get
started while enabling maximum flexibility for the development
team.
In the famous words on Andrei ... Destroy!
GL ES 3.0 is a subset of some 4.x version AFAIK, so it may be
enough to only target that instead of separately targeting GL 4.3
.
Also, why not OpenGL for 2D on Linux (and possibly elsewhere) ?
Also - I think there should be a possibility to switch between
e.g. GL and D3D on Windows (I assume that's intended?)