OpenGL ES Bootcamp
As problem sets explode in complexity, radical gains in performance have resulted from moving traditional graphics processing from the CPU to GPU. If you are doing any work concerning graphics, then you must know OpenGL and this class is the fastest way to master the ideas and techniques of OpenGL programming.
By taking full advantage of hardware acceleration, shaders, blending, textures and video we'll help you get the most out of your data. Learn how OpenGL works, what functionality it does and does not provide, how to profile your code to reach peak performance and much more.
The course will provide libraries and frameworks for abstracting the operating system and allowing the student to focus solely on learning OpenGL. Concepts and exercises which are tangentially related to OpenGL and depend on interaction with the OS will be taught using Mac OS X technologies (such as multiple rendering contexts or multithreaded OpenGL applications).
What You'll Learn
- Specify 3D geometry for OpenGL
- Write vertex and fragment shaders for full control over 3D rendering
- Understand how to use transformation matrices to position objects in a 3D scene
- Create perspective and orthogonal views
- Texture 3D objects with images
- Control lighting in a 3D scene
- Control the camera in both first- and third-person views
- Add special effects like bump mapping and shadow mapping
- Render point clouds and make animated particle systems
- Select 3D objects in a rendered scene
- Create higher level scene graphs powered by OpenGL rendering
- Use OpenGL ES on iOS, Android and WebGL
- Understand the differences between the fixed function and programmable pipelines
- Understand performance bottlenecks by interpreting GPU profiling data
- Overview of next-gen graphics APIs Vulkan and Metal
How to prepare your device for our class
WHAT YOU'LL NEED
The most important thing is that your graphics card can run a relatively recent version of OpenGL. The class will be taught with OpenGL 3.2 for desktop, OpenGL ES 2.0 for mobile and WebGL 1.0 for browsers.
Bring a laptop you can develop desktop and mobile software on. If you have a choice between a Mac and PC, a Mac is preferred.
Having a provisioned iOS or Android device to run code on is great if possible. If you don't have a provisioned device, you will be able to complete the class but you will not be able to do live video processing. (We have provided an alternate lesson so you will have something else cool to do.)
Please make sure you can run code on your device before getting to class so you can spend your time learning about OpenGL instead of installing software.
Students using a Mac should have the following software:
- Yosemite or Mavericks
Students using a PC should have the following software:
- Windows 8 or Windows 7
- Visual Studio
- Most recent graphics drivers for your video card
To run OpenGL ES on iOS, you will need:
- Provisioned iOS device that supports OpenGL ES 2.0 or higher
To run OpoenGL ES code on Android, you will need:
- Android device that supports OpenGL ES 2.0 or higher
- Eclipse or Android Studio
Command line development is also fine, though the lessons are tailored towards students using IDEs.
Vectors and matrices are basic primitives in GLSL, the OpenGL shader language. Read through a few tutorials and make sure to understand the dot product and the cross product, which are the two ways we multiply vectors:
A basic understanding of how a GPU works from the programmer's point of view will explain a lot of the otherwise idiosyncratic countours of the OpenGL API. This article from the ACM is a basic overview, while Fabian Giesen's article goes into more details than we will cover in class.