The Modern Approach to OpenGL

2010, Dr. Lawlor, CS 481/681, CS, UAF

Graphics Processing Units (GPUs) have gained incredible super powers over the past ten years.  No longer limited to plain fixed-function OpenGL, you can both perform arbitrary computations at each pixel (including loops, function calls, and arbitrary table/texture lookups) and you can perform those computations ridiculously fast.

This is starting to seriously affect how we do interactive graphics.  Back in the day, you were stuck with polygons and lines, and mostly had to learn how to get OpenGL to draw them. 

Today, when you draw polygons it's really just a convenient way to specify which pixels are supposed to run your pixel shader program.  The actual object you're drawing may be constructed entirely computationally inside the pixel shader, and have little or nothing to do with the enclosing "proxy" geometry.  For example, instead of drawing a sphere using a million tiny polygons, today you typically draw a sphere by drawing one big quad, and analytically determining which pixels actually show the sphere.

This all-programmable approach lets you toss out huge chunks of OpenGL:
However, there are parts of OpenGL that still perform a useful function:
In this class we'll be exploring the modern rendering approach, and see how it can dramatically improve rendering accuracy, speed, and expressive power.