3D Graphics with OpenGL ES and M3G- P19:Mobile phones are the new vehicle for bringing interactive graphics technologies to consumers. Graphics that in the 1980s was only seen in industrial flight simulators and at the turn of the millennium in desktop PCs and game consoles is now in the hands of billions of people. This book is about the technology underpinnings of mobile threedimensional graphics, the newest and most rapidly advancing area of computer graphics. | 164 INTRODUCING OPENGL ES CHAPTER 7 implementations currently support it. The stencil operations GL_INCR_WRAP and GL_DECR_WRAP have been omitted. OpenGL ES blending functionality conforms to OpenGL rather than version like the rest of the API. This eliminates functions such as glBlendFuncSeparate glBlendEquation and glBlendColor that were introduced in OpenGL . Frame buffer operations The most significant changes relate to the frame buffer operations. There is only a single drawing buffer and accumulation buffering is not supported. The entire imaging subset has been removed. 2D rendering through glDrawPixels or glBitmap is not supported as it can be emulated with a texture-mapped pair of triangles. The depth and stencil buffers cannot be read back as glReadBuffer and glCopyPixels have been omitted. glReadPixels is supported although with a very limited number of pixel formats. Miscellaneous Evaluators feedback selection and display lists have been omitted since they have a high implementation burden and can be reasonably easily emulated in the application. With the exception of display lists these features are not widely used even in desktop OpenGL. OpenGL ES supports only queries for static state whose values are defined when an OpenGL context is created and will not change during execution. This means that an application must track its own state as it cannot be queried back from GL. An optional extension glQueryMatrixxOES was created to enable reading back the current matrix values. The convenience routines for saving and restoring the state via the attribute stacks are not supported. NEW FEATURES IN OPENGL ES OpenGL ES was first introduced at SIGGRAPH 2004. This version is clearly more hardware-oriented than its predecessor with features targeted at gaming applications and for higher-level APIs such as M3G. Nevertheless software implementations of OpenGL ES remain feasible. Vertex buffer objects Vertex buffer objects that allow