Aurora Graphics Library Initial Design Discussion

Adam Wilson flyboynw at gmail.com
Sun Jan 19 17:48:26 PST 2014


On Sun, 19 Jan 2014 16:53:31 -0800, Adam Wilson <flyboynw at gmail.com> wrote:

> On Sat, 18 Jan 2014 19:38:29 -0800, Adam Wilson <flyboynw at gmail.com>  
> 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!
>>
>
> So I've reworked the default backend API's list.
>
> System		 2D API   / 3D API
> Linux		  X11      / OpenGL 3.2
> Android		Canvas	 / OpenGL ES 2.0
> OSX		    Quartz2D / OpenGL 3.2
> iOS		    Quartz2D / OpenGL ES 2.0
> Windows		Direct2D / Direct3D 11
> Windows	RT     Direct2D / Direct3D 11
>
> I want to note that I am NOT including D3D9 because Windows XP is EOL in  
> 3 months. Yes DMD still supports Windows XP but as I recall it was  
> decided to deprecated Windows XP support at EOL or shortly afterwards  
> becuase of XP's hacky TLS support. Either way, WinXP is usage is going  
> to start sinking off after EOL and I suspect that by the time Aurora is  
> Beta in a couple of years it will be under 5%. Also since Vista usage is  
> under 5% already I have skipped DX10. That said, I doubt that Aurora  
> will actually need the new capabilities of D3D11, however I can't  
> guarantee that since the shaders aren't written yet. :-)
>

This should read:
Linux		 OpenGL 3.2      / OpenGL 3.2

-- 
Adam Wilson
GitHub/IRC: LightBender
Aurora Project Coordinator


More information about the Digitalmars-d mailing list