We've rebooted our OpenGL class! OpenGL is one of the most popular 3D graphics APIs, and our class now focuses on OpenGL ES ("Embedded Systems"), the flavor used by iOS, Android and WebGL. I’ve been developing the new curriculum and couldn’t be more excited about teaching the next session in early March.
Though OpenGL is one of the oldest APIs around, it went through quite a revolution a few years ago, when it moved from the fixed function pipeline to today’s programmable pipeline. And thanks to the mobile revolution, adoption of the programmable pipeline has only accelerated. This, combined with so many software engineers moving to mobile development, convinced us to rework the class we’ve been offering for 10 years.
In the new and improved OpenGL ES class, we start by focusing on the programmable pipeline, getting into shaders from the first morning and continuing all week. No longer will they be a mysterious entity that you find out about at the end of the book; instead, you’ll be writing code to execute on the GPU from the start.
Using programmable shaders comes at a cost; OpenGL no longer provides handy things like transformation stacks for the camera or built-in rotation matrix calculations. Developers can write their own or use a library, but some OpenGL guides have written very extensive modules to make up for the change. Our rebooted course uses the open-source glm library, which is patterned after the OpenGL Shading Language, for vector and matrix manipulation in C++. In addition, we’ll also take a look at a few other libraries and see what makes them tick.
Even if you don’t have experience in programming 3D graphics, don’t worry. We explain principles from the ground up, so you’ll learn all the necessary concepts and how they work together, from getting geometry on the screen to using special effects like bump mapping and particle systems. We even try to keep the math to a minimum; I promise there will be no eigenvectors. Well, maybe after dinner, back in the lab...
In our current landscape, OpenGL is the language for 3D programming. There are so many great things to learn that you’ll have to see them all in the course syllabus, but here are some of my favorites:
Write vertex and fragment shaders for full control over 3D rendering
Texture 3D objects procedurally and with images
Render point clouds and make animated particle systems
Understand how popular open-source projects use OpenGL
Pick arbitrary 3D objects in complicated scenes
Create higher-level scene graphs powered by OpenGL rendering
I’m proud to be bringing the Big Nerd Ranch’s OpenGL curriculum to the next level. If you're interested in learning OpenGL ES and computer graphics from first principles in the time-honored Big Nerd Ranch tradition, sign up today and I'll see you there!