Intro:
- graphic pipeline and OpenGL
- OpenGL history (origin & evolution)
- fundamental concepts
OpenGL is an interface that your application can use to access and controlthe graphics subsystem of the device upon which it runs.
Metaphor: production line
Just as a car plant can build multiple cars simultaneously, so can OpenGL break up the work you give it and work on its fundamental elements in parallel. Through a combination of pipelining and parallelism, incredible performance of modern graphics processors is realized.
The goal of OpenGL is to provide an abstraction layer between your application and the underlying graphics subsystem.
Current GPUs consist of large number of small programmable processors called shader cores which run mini-programs called shaders.
boxes with rounded corners are considered fixed-function stages whereas theboxes with square corners are programmable, which means that they execute shaders that you supply.
Primitive: Fundamental unit of rendering. 3 basic renderable primitive types: points, lines, triangles(convex).
Rasterizer: converts the 3D representation of a triangle into a series of pixels that need to be drawnonto the screen.
Vertex: a point within a coordinate space.
Graphic pipeline: 2 parts:
First, front end: processes vertices and primitives, eventually forming them into points, lines and triangles, that will be handed off to rasteriser. (Primitive assembly)
After rasteriser, geometry converted from vector to pixels. These are handed off to back end, which includes depth and stencil testing, fragment shading, blending, and updating the output image.
reference: OpenGL Superbible 6th