Follow Slashdot stories on Twitter


Forgot your password?

OpenGL ES 2.0 Programming Guide 48

Martin Ecker writes "Mobile phones and other embedded devices are getting more and more powerful each year. The availability of dedicated hardware for 3D rendering is becoming increasingly ubiquitous, and the latest mobile phones come with 3D hardware acceleration that rivals the power of desktop graphics hardware. OpenGL ES 2.0 is the latest version of a cross-platform, low-level graphics API to utilize these new resources available in embedded devices. The OpenGL ES 2.0 Programming Guide published by Addison-Wesley Publishing aims to help the reader make use of the full power of OpenGL ES 2.0 to create interesting 3D applications." Keep reading for the rest of Martin's review.
OpenGL ES 2.0 Programming Guide
author Aaftab Munshi, Dan Ginsburg, Dave Shreiner
pages 417
publisher Addison-Wesley Publishing
rating 7/10
reviewer Martin Ecker
ISBN 0-321-50279-5
summary All you need to know to develop mobile phone 3D applications in OpenGL ES 2.0
The book is intended for an audience with experience in the C programming language and a solid foundation in computer graphics. No experience with the desktop version of OpenGL is necessary, however. The book starts out with a basic introduction of OpenGL ES and explains the differences between OpenGL ES 1.x and 2.0. The main difference is that 2.0 has completely dropped support for the fixed-function pipeline and is now completely shader-based. The book then immediately gets the reader's feet wet by discussing a first simple example program that renders a triangle on the screen. This is also where the downsides of dropping fixed-function support in OpenGL ES 2.0 become apparent. It takes almost 4 pages of code to render a simple triangle. The reason for this is that you need to write a vertex and fragment shader (albeit really simple ones) to transform vertices to device coordinates and to assign a color to each pixel of the triangle. Of course, in "real-life" applications this isn't much of a problem. The increased possibilities that programmable shaders have to offer outweigh the inconvenience of having a bit more setup code.

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 Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.


This discussion has been archived. No new comments can be posted.

OpenGL ES 2.0 Programming Guide

Comments Filter:
  • No?

    Very disappointed. I want to be able to put on a pair of 3d glasses and look around and see all of the information superimposed on reality.

    I'm not going to shell out any cash till that's one of the features.

    • Re: (Score:2, Informative)

      What you're referring to is known as Augmented Reality" [] and a lot of smart people are working on it.
      • Mediocre anime that was themed on this AR being integrated into an urban/suburban infrastructure accessible by equipped glasses. This accompanied by a romanticized "hacking"

        It made me think about AR and read up on the practicalities and limitations. Obviosly the reality and practicalities of AR, or at least the combination of real-world and computer-generated data in real time, fell short. The DSP that this requires is FAR out of the range of modern hand held-devices.

        Also, I can't imagine that it would be f

  • Rivalling? (Score:5, Informative)

    by nick_davison ( 217681 ) on Monday October 06, 2008 @02:38PM (#25275893)

    the latest mobile phones come with 3D hardware acceleration that rivals the power of desktop graphics hardware

    If, by "desktop graphics hardware" we're comparing to the books, empty bottles and other assorted clutter, it exceeds them.

    If, however, we mean "desktop PC"... it only rivals it if we're talking about integrated chipsets from a decade ago.

    It's a cute dream. And Monkey Ball on my 480x320, ~50% of VGA resolution iPhone doesn't look half bad for a simplified version of a GameCube era title. But, even accepting there's better hardware than the iPhone for 3D... It's a LONG way from rivalling desktop graphics quality, even on a pixel for pixel comparrison where a 0.15MP phone is trying to compete with a 2.3MP 24 inch monitor that's pushing around 15x the number of pixels.

    It's kind of like saying I rival an olympic runner. It's true in so far as we both have legs and, if I limit my competing to being against small children in my own backyard, I can often win. In every other way that counts, it's just not happening though.

    • Re: (Score:2, Funny)

      by Anonymous Coward

      This is /. it's car analogy or nothing.

    • Re:Rivalling? (Score:4, Insightful)

      by daviddennis ( 10926 ) <> on Monday October 06, 2008 @02:55PM (#25276061) Homepage

      I'm trying to learn OpenGL so I can program in Open GL ES for my iPhone, and it seems like you need a book specifically for ES, because OpenGL ES eliminated most of the features used in beginning OpenGL tutorials!

      But the iPhone supports only 1.1 and so I'm wondering if this book would even work for me. I'm thinking its rival, Mobile 3D Graphics ... [] might be better.

      Any thoughts from those who have checked out both books? It would be nice to have good information before I blow $50.



      • Re: (Score:3, Informative)

        by egomaniac ( 105476 )

        Just learn from the OpenGL ES spec. It's not hard at all -- I was rendering real graphics in a few hours.

      • You don't want to use and OpenGL ES 2.0 book to learn how to program in OpenGL ES 1.1. OpenGL ES 1.1 and OpenGL ES 2.0 are very different APIs. Desktop OpenGL has much more in common with ES 1.1 than ES 2.0. ES 2.0 replaced all the fixed function shading API in ES 1.1 with programmable shaders.

        OpenGL ES 1.1 is most similar to something like desktop OpenGL 1.5. There are still significant differences, but those are the sorts of tutorials you want to look at if you can't find ES 1.1 specific tutorial
        • Re:Rivalling? (Score:5, Informative)

          by TheRaven64 ( 641858 ) on Monday October 06, 2008 @04:54PM (#25277415) Journal

          The OpenGL specs are written for hardware implementers and not for app programmers. Heck, I'm been implementing OpenGL for over 7 years and these specs still confuse me sometimes.

          Have you looked at the OpenGL ES 2.0 spec? I glanced over it a couple of days ago (a friend asked bought an OpenPandora system and asked me for advice about learning ES). It is much more readable than other versions of OpenGL, and includes some nice introductory text explaining the terminology that will be used later on. Someone capable of checking Wikipedia for general concepts when they find they don't understand what the spec is explaining (or who has already come across the general ideas in 3D computer graphics) should have no problems learning from it.

      • by grumbel ( 592662 )

        It is true that a lot of beginners OpenGL code won't work on OpenGL-ES, but the differences between the two isn't really all that big. The main difference is simply that in OpenGL-ES you have to use vertex arrays, while in OpenGL it is an optional thing. While this breaks many code examples its not hard to fix and code that uses vertex arrays will work on both OpenGL and OpenGL-ES.

    • What you're referring to is known as Augmented Reality" [] and a lot of smart people are already working on it.
    • Well, if I can play Quake 1 on my iPhone at far far better framerate than I played it on my Mac at 320x200 in 1997 or whenever it first came out for Mac OS, it's definitely a freaking solid offering. There's nothing "dreamlike" about it other than that it's something people HAVE dreamed about for ages, and it's finally becoming possible. Consider that some dudes got straight-up Quake 3 running on iPod Touch/iPhone. No joke, check out the videos here []. It's pretty damn surprising, honestly.

      Also it's pretty

  • ...particularly including desktops, is this really the way to go? If something is written to the OpenGL ES 2.0 API, besides 'mobile devices' what desktop systems (Linux, Mac, Windows) could it run on?
  • I have this book sitting in my Amazon cart, because I might get it for developing 3D stuff on the Pandora [].

    I preordered the Pandora, and should get it by Christmas, so I haven't gotten this book yet.

  • by Anonymous Coward
    Demo was developed for Texas Instruments OMAP3 platform, but should run on most OpenGL ES 2.0 platforms out there. It was released at Assembly 2008 Real Wild demo competition.

  • Get your stinkin' 3D off my cell phone! It is yet another ridiculous piece of bloatware because of which it takes ages to turn the phone on or off. Do these developers realize that most people don't want the stuff they already implemented? How about focusing on battery life, startup time, and voice clarity instead, huh? You know, the things that actually matter in a phone, instead of making 3D games, which are cool, but most certainly do not belong on a handheld device.

    • Re: (Score:3, Interesting)

      by ceoyoyo ( 59147 )

      Go buy one of those phones they advertise on the infomercials for old people.

      I like my handheld computer that happens to also make phone calls, thank you. So do a lot of other people. Besides, you turn your phone off??

      • by SteevR ( 612047 )

        Some people work at companies that:

        1. Don't allow cell phone use, or allow them only in break areas, and

        2. Have such awful parking lot security that you're not going to leave it in your car.

        As such, its really nice to have a phone that doesn't take a minute to power on/off.

        • by ceoyoyo ( 59147 )

          Then buy one. A few paranoid people working for control freak companies who can't wait twenty seconds for their phones to boot once a day really isn't an excuse for crippling the rest of our handheld computers.

          • by SteevR ( 612047 )

            Well, if the companies you bought your "handheld computers" from would open up the phone part of the device, we would be assured of being able to disable that component without turning off the device, which would be nice. Also, these devices need to be available in a larger range of options, to help folks deal with all the places they need to take their device (many companies don't allow cameras, personal devices with wifi, SD slots, or things that can act like USB storage). Imho a computer is a customiza

            • by ceoyoyo ( 59147 )

              As I said, go get one of those phones with the big numbers on the display that they market to the senior crowd. No bells, no whistles. Probably starts up in about half a second flat, and requires another 30 or so to register with the network.

              The rest of us LIKE having our large screen phones (I really don't care if you "buy" the description of them as "computers") able to actually USE that screen.

              • by SteevR ( 612047 )

                Did you miss my statement I own a Palm Treo 750? OK, its no iPhone in terms of screen size, but it is capable of any communications task my desktop is (ssh/telnet, voice, various IM protocols, email, web, etc.). I like using my smartphone, its a neato chunk of consumer electronics.

                While I haven't personally owned a smartphone until recently, that doesn't mean I haven't enjoyed their use- I've been developing custom application software for the things for about 6 years, and at times had 3 or 4 of the thing

    • Seriously, why do you want to buy an iPhone if you just want a mobile telephone? If you want a no-frills mobile phone you buy something like a Nokia 1110i. If you want a semi-frilly mobile with stuff like Bluetooth you might be able to justify dropping 100 bucks on it. But an iPhone is ridiculously expensive if you don't want a smartphone that does everything anyone might ever want or not want.

      I'm not the target demographic for the iPhone but I also don't complain about it. (I do, in fact, complain about
    • Interesting that you mention battery life. You realize that doing UI with dedicated circuits takes less power than using generic ALU to compute color for each pixel? The UI is what takes most of the processing power. If we have low-power graphics core in there, we can keep the CPU clocked lower and have total power savings. A smooth UI is not bloatware, it makes the device easier and nicer to use. Initializing OGLES+EGL driver stack takes like 20 ms at most, that nothing. Most of this time is retrieving th
  • the latest mobile phones come with 3D hardware acceleration that rivals the power of desktop graphics hardware.

    For superbly rendered phone calls, of course.

Our business in life is not to succeed but to continue to fail in high spirits. -- Robert Louis Stevenson