In 2018, I started my journey of learning OpenGL, we were migrating our app from using the Android Canvas system to using the more flexible (but indeed more complex) OpenGL ES. OpenGL ES is a cross-platform graphics API that specifies a standard software interface for 3D graphics processing hardware.
OpenGL allows you to build interesting things like filters and effects on videos, or some interesting mathematical patterns that produce beautiful wallpapers. These two examples below, just touch the surface of what OpenGL can do:
Little did I know the massive undertaking it would be to learn this new world of programming. OpenGL was a whole different programming paradigm to what I was used to. At first it was even more confusing compared to just a new language as it requires you to think in a different way.
It has been almost 2 years since I started and I still don’t know everything there is to know about it but I’m way more comfortable adding new OpenGL code than I was before.
I read countless articles, took many courses (that aren’t directly related to Android) and read through many sample apps. I’ve also been fortunate enough to have colleagues who know a lot about OpenGL, which has made my learning path a bit easier.
Here is a list of resources that I found useful for learning OpenGL, and I hope you find it useful too:
Useful resources for learning OpenGL
- Interactive 3D Graphics — Udacity Course (Free) — Although some of the resources inside this course are missing, the course covers the fundamentals of graphics programming and all the different concepts.
- OpenGL Shading Language (3rd Edition) — Great book detailing a lot of information about how OpenGL works and great examples.
- Book of Shaders — This is a great resource for learning all about Shaders and the different mathematical functions that can produce different results.
- ShaderToy — Show and Tell website where people publish awesome shaders that they have made.
- Android Documentation on OpenGL ES — The documentation is always good to read, but it does assume some basic knowledge of Shaders and OpenGL, so it can be confusing to get started with.
- Creative Coding with Canvas and WebGL — Although this course is web based, the concepts are the same for OpenGL on Android.
- Advanced Creative Coding with WebGL & Shaders — Same applies as previous course, it uses Three.JS but Matt does an excellent job of explaining WebGL and some core concepts that are the same in OpenGL.
- Open.GL – Nice documentation for learning OpenGL from scratch, covers core concepts.
- OpenGL ES 2 For Android — This book is a bit old (it uses Eclipse) but so is OpenGL, so the concepts have remained the same.
- Muzei — An Android Sample that uses OpenGL.
- Grafika — An Advanced Android Sample app that displays usages of OpenGL (and more complex things like Video encoding)
Have any resources that you found useful for learning OpenGL? Let me know on Twitter @riggaroo.