Graphics
Applications can optionally generate graphics,
which are displayed by the core client in either
its application (window) or screensaver (full-screen) form.
The graphics architecture has not been completed.
It may differ between platforms.
Some possibilities:
-
Applications render their graphics into
an offscreen buffer in shared memory.
The core client or screensaver BLITs this to the screen.
(Problem: no X11 toolkits let you render into
memory in the client. Mesa does, but that forces
you to use OpenGL).
-
Applications are passed a window descriptor by the
core client or screensaver.
Problem: can you do this in Windows? in X11?
-
Applications encode their rendering in a byte stream
of some sort (OpenGL had something like this),
and send if through a pipe to the core client or screensaver.
-
Applications supply their rendering code in a separate shared library
which is dynamically linked into the core client or screensaver,
and which communicates with the main application
through shared memory.
This is how United Devices works.
Disadvantage: complex.