|OpenGL ES 2.0 Programming Guide|
|author||Aaftab Munshi, Dan Ginsburg, Dave Shreiner|
|summary||All you need to know to develop mobile phone 3D applications in OpenGL ES 2.0|
The book continues to discuss EGL, which is like WGL on Windows or GLX on Unix, i.e. the interface between OpenGL and the underlying operating system. The next few chapters give a basic introduction to the OpenGL Shading Language. As mentioned above, with OpenGL ES 2.0 using shaders is the only way to get something on the screen. So having a good grasp of the OpenGL Shading Language is essential. The discussion at this point is fairly dry and might overwhelm readers that haven't used a shading language before. Later chapters, however, delve more deeply into developing vertex and fragment shaders.
The subsequent chapters present how to specify vertices and primitives in OpenGL ES. OpenGL ES 2.0 only supports generic vertex attributes (since there is no fixed-function pipeline anymore) and vertex data can only be specified using vertex arrays or vertex buffer objects. Immediate mode as known from desktop OpenGL is not available.
Now that the reader is familiar with sending vertices and triangles to the 3D hardware, the book describes vertex and fragment shaders in more detail. There is also a pretty long chapter on texture mapping, going into the specifics of the API calls to define and upload textures to the hardware. There are numerous examples in these chapters that demonstrate how to do lighting, generate texture coordinates, perform vertex skinning, multitexturing. These are all essential examples because the fixed-function pipeline that used to do these things is not available in OpenGL ES 2.0.
The next two chapters deal with the backend of the pipeline discussing the various per-fragment operations following the fragment shader, such as stencil test, scissor test, depth test, and framebuffer blending. Also framebuffer and renderbuffer objects (FBOs) used to efficiently implement render-to-texture in OpenGL are discussed. FBOs are thankfully fully supported in OpenGL ES 2.0. It's nice to see a whole chapter on this topic since this particular feature took a long time to make its way into OpenGL.
Chapter 13 on advanced programming with OpenGL ES is probably the best part of the book for me. It is one of the longest chapters of the book and contains numerous examples of advanced shader techniques, such as per-pixel lighting, point sprite particle systems, 3D noise, procedural textures, and some others. The provided examples are a good starting point for experimentation.
The book concludes with a chapter on state queries, which are used to obtain various parameters about the OpenGL render state, and a chapter on the interesting topic of using OpenGL ES on handheld platforms, which briefly goes into OpenKODE. OpenKODE is a standard set of APIs that provides a unified interface to the system OS of handheld devices.
Overall, the OpenGL ES 2.0 Programming Guide is an excellent book if you want to start developing 3D graphics applications for today's embedded devices and bleeding-edge mobile phones. The book also does a good job of pointing out the differences and similarities with desktop OpenGL. So if you're already familiar with OpenGL the book can help you identify the limitations of OpenGL ES compared to its big cousin.
Martin has been involved in real-time graphics programming for more than 10 years and works as a professional game developer for High Moon Studios in sunny California.
You can purchase OpenGL ES 2.0 Programming Guide from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.