What are different ways that we might consider doing rendering? Why did OpenGL make the decisions it did and what does the OpenGL pipeline look like?