Modern 3D graphics APIs such as recent versions of OpenGL use a programmable rendering pipeline. I first learned about the older fixed-function rendering pipeline. I took a course in college on 3D graphics programming that taught lots of theory and an older version of OpenGL. I’ve produced programs that portably run in GLUT on both Macs and Windows. I’ve written an iOS app that uses OpenGL ES 1. Yet I was slow to make the jump to the programmable pipeline versions of OpenGL.
One day I came across Jason L. McKesson’s online book Learning Modern 3D Graphics Programming. After a quick perusal I concluded the book could be a refresher for 3D graphics programming while moving me up to the programmable pipeline. I started reading the book, downloaded the source code, and tried to get it running on my Mac.
I didn’t have much luck. The framework McKesson wrote to isolate his example code from the overhead of displaying a window on screen and interfacing with the operating system seems to be written for Windows first, then ported to Unix like systems (Linux, etc.). It doesn’t “just work” in Xcode on my Mac. I soon found that building McKesson’s framework in Xcode would be a significant effort.
I’m an iOS developer. I want to write OpenGL ES 2 code in iOS apps. Apple’s GLKit in the iOS 5 API serves the same function as McKesson’s framework. I realized any effort put into getting McKesson’s framework to build in Xcode on my Mac would not actually serve my final purpose. Instead I should just use the source code of McKesson’s tutorial programs as guidelines for building iOS apps. For each of McKesson’s example programs I’ll write the equivalent GLKit iOS program.
When I started this project McKesson’s book was a work in progress. Now, a few years later, McKesson appears to have abandoned his project, as the book is no longer on line. As far as I can tell the project was never completed.
When I wrote my example programes I decided to share my efforts. As I made my way through the tutorials in this book I wrote up a description of how my programs differ from the originals. My blog posts built on McKesson’s book, covering merely the differences between his example programs and my iOS versions. I published my work to Bitbucket.
I came back to the project today, thinking I’d give it a little love, updating the projects for iOS 8, maybe even porting them to Metal as practice. Yet, my willingness to give this project any more effort evaporated when I saw that McKesson hasn’t progressed the book in years. I’ve removed my project from Bitbucket.
Instead I think I’ve found something more interesting, The Book of Shaders by by Patricio Gonzalez Vivo. Maybe I’ll make iOS example programs from that book using Metal.