Feb 28 2013

OpenGL ES Course Offers a New Dimension of Learning

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.

OpenGL ES is used by iOS, Android and WebGL.

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.

Another great addition to the class is WebGL, the OpenGL ES API in your browser that is accessed with JavaScript. This means that testing a WebGL program requires only reloading a web page and not a full-blown edit – compile – execute loop. You won’t be stuck waiting for compiles, and faster development means that we can stuff your brains with even more knowledge! Putting the 3D in a web page has the added advantage of giving you access to all sorts of HTML controls to manipulate your scenes.

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!

2 Comments

  1. Romeo

    Oh my. When will you ever have an online class for the rest of us who don’t live near you.

    • Jonathan Blocksom
      Tasha Schroeder

      Hi Romeo, we believe that people learn best in an immersive setting with expert instructors, and we strive to offer that at our Ranches in Georgia, California and the Netherlands. If you can’t make it to a bootcamp, be sure to check out our books and keep an eye on the blog for relevant posts!

Leave a Comment

Join the discussion. Do not worry, your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>