In the operating system field, the application programming interfaces of various operating system families have incorporated calls or interfaces to a variety of graphics routines. The APIs of known operating systems, such as desktop operating systems or mobile device systems, for instance allow applications operating under those operating systems to call certain shading, rendering, shape-adjusting, motion-related, and/or other processing routines to supply results to those applications.
In existing API implementations, however, an application which wishes to render a scene containing a number of graphics objects may need to explicitly order those objects before rendering and presentation to the user via a display. For instance, a computer-based game or simulation which depicts a large flock of birds may need to determine which individual bird, as a graphical element, needs to be generated, rendered, and/or presented first, second, third, and so forth to create a desired visual effect, such as the motion of the flock across the screen or others. While known APIs can accept calls to produce those individual graphical objects, it may be the responsibility of the calling application, such as gaming software, to compute and arrange those objects in the desired order in the scene. In implementations, this can be due to the fact that graphical resources exposed by the APIs in existing operating systems may be single-threaded. The depicted birds or other objects of the scene can be arranged, for example, based on the distance of the objects from a viewpoint in the scene. The viewpoint can, for instance, reflect the vantage point of a player in a game, or other user. However, when the set of graphical objects of a scene are large or under other conditions, the necessity to compute the order of the objects can represent a significant computational burden on the application. The need to generate and order graphical objects via the (typically single-threaded) API can affect the performance of the application, and detract from the resulting user experience
It may be desirable to provide methods and systems for order-independent rendering of graphical objects using operating system resources, in which the API of an operating system can provide both computational and graphical resources to applications running under that operating system, and automatically generate an ordering of graphical objects on the API side.