The screen is composed of a series of pixels (picture elements)
The number of pixels vertically and horizontally determine the resolution
Each pixel will have a way to produce between 1 (monochrome) and 3 colors
There will be a number of intensities for each color.
In computer graphics, there is an associated section of memory that holds the values which should be displayed
This is called a raster (on the monitor side)
Devices like the Oculus rift are just frequently just an extension of 2d devices
A different 2d image is somehow delivered to each eye
Software
Rendering Graphics is many layers deep.
Operating system
Some graphics support system
Some graphics library
Some application
Since I am most familiar with Linux/X/OpenGL we will discuss that
OS
Manages the hardware.
Drivers provide the low level software interface between the hardware and the kernel
The X11 window system is the graphics system for linux.
A client server based system.
The server
Is a program
Which interacts with the kernel.
Send requests for display (write bits to raster...)
Receive events from the input devices (via kernel)
Is network transparent, thus you can perform requests over the network.
The clients are applications
An xterminal, web browser ...
A strange client is the window manager
They communicate with the X server via the X protocol
Using calls from the X library
Window XCreateWindow(Display *display, Window parent, int x, int y,
unsigned int width, unsigned int height,
unsigned int border_width, int depth,
unsigned int class, Visual *visual,
unsigned long valuemask,
XSetWindowAttributes *attributes);
The Xlib library is quite primitive
no support for buttons, menus, scroll-bars ...
So other libraries have been created.
FLTK, QT, GTK, ...
These are frequently constructed from component libraries as well.
Frequently designed to be cross platform!
The next layer up (for us) is a graphics system
This is a library which supports the creation of graphical objects
This will be the main study for the semester.
OpenGL, DirectX, ...
X supports drawing lines in 2D, and setting Pixels