Aurora Graphics Library Initial Design Discussion

Xavier Bigand flamaros.xavier at gmail.com
Sun Jan 19 04:08:15 PST 2014


Le 19/01/2014 04:38, Adam Wilson a écrit :
> 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!
>

Like some other I think you can only use openGL as backend, and took a 
lower version like openGL 2.1 (and shader version 1.40) which is 
completely compatible with openGL ES 2.0.

In practice I don't think there is performance difference between openGL 
and DirectX under Windows if both backend have the same level of 
optimization. The only bad point of openGL under Windows is the bad 
compatibility of drivers of Intel integrated chipset. Some don't provide 
equivalent openGL functions supported by the DirectX version of drivers 
notably when it concern shaders.
Fortunately today Intel provide all necessary functions in openGL 
drivers. There is also the possibility to use Angle library.



More information about the Digitalmars-d mailing list