Toji's OpenGL 2.1 Samples

So, yes. There used to be a blog here that was supposed to host OpenGL 3 tutorials. And then OpenGL 3 actually came out after many many delays and it was pretty worthless, so I never got around to actually doing the tutorials. Then the blog started to attract LOTS of spam. So I decided that since I wasn't doing the tutorials any more I would shut it down.

However, there was apparently at least a little bit of interest in the OpenGL 2.1 code samples that I posted on here (I wouldn't really call them "tutorials", since that implies something other than commented code. These were written just to show the differences in the 2.1 and 3 APIs. *laugh* That seems pretty funny now, 'cause there aren't any.) In any case, I will leave those code samples up for anyone who might find them useful.

Have fun!

All tutorials are Win32 only.

This is my final blog post on the site, preserved to illustrate why I dropped the idea of doing the tutorials.

OpenGL is Dead

August 12th, 2008

So… Where to begin?

For a while now we’ve been hearing spectacular things about what OpenGL 3.0 was supposed to be. It was going to be a COMPLETE re-write of the API, focusing on an all new object-based model and scraping the cruft off the spec that has been accumulating over the years. Things like the fixed function pipeline, immediate mode, etc. were going to be banished in favor of a streamlined, easy-to-use, easy-to-implement set of core functions. It was also going to bring the API up to modern standards, incorporating all of the great new features of DirectX 10, but without the massive barrier to entry called Vista. And, in fact, I and many other developers beleived that it could easily change the tide of the 3D wars: If GL3 exposed all of the functionality of DX10 but didn’t require the largely shunned OS, as well as having an easy to use interface, it could have very quickly become the Game developers API of choice!

I put together this (admittedly humble) site in anticipation of just that. My desire was to, as soon as possible once the spec was out, produce a series of code sample that would show how to produce the same results in both GL2.1 and the radically different GL3.0, so that hobby developers could have some simple examples of how to port their existing functionality. I still wish I COULD do that, but sadly I’m here to tell you that there’s simply no point anymore.

The official OpenGL 3.0 spec was released today, after months and months of delays. You can go check out the link, but frankly don’t get too excited. I jumped on it the moment I saw the link show up in my RSS feed. I couldn’t start reading fast enough… and then I saw the document start mentioning glVertex3f().

My heart fell. I literally felt sick to my stomach. My mind swirled to justify it: Why in the world would immediate mode still be in the GL3 specs? The more I read, the more it became apparent that what I was reading was not at all a brand shiny new spec, but instead a repackaging of all that came before with about 2 pages (yes, only 2) worth new content tacked onto the end in the form of a few NVidia extensions that had been promoted to core.

Yes. You read that right. OpenGL 3, the savior of cross platform graphics, the “Totally re-written API”, is nothing but a few new functions and a vague notion of depreciating older functions down the road. My eagerly awaited object model was nowhere to be found. To say I was a bit unhappy is an understatement.

My visits to several community forms confirmed that I wasn’t alone in my “unhappiness”. Developers from all over were voicing my exact thoughts on the matter: We were left in the dark, lied to, and given a end-product that frankly looked as if nobody cared. Not even Vista was this big of a slap in the face. A few people have pointed to a new extension (written against 2.1, mind you) that looks as if it may be used to implement part of the new object model that was talked about, saying that this could possibly help things along, but when compared to what people really wanted, it’s pretty weak sauce. We’re promised a fully re-written, modern graphics API and given an extension which MIGHT be used to implement SOME of what was expected IF anyone supports it. Forgive me if I’m unipressed.

So here’s what it’s come down to: Microsoft has been making measurable strides in the progression of their graphics API, while OpenGL promised big and barely lurched forward. While I don’t like the platform lock-in of DirectX, the fact is that it’s a very good API that has some solid leadership behind it, and while I consider the fact that it’s latest iteration is Vista only a misstep, it’s not nearly as big of a disaster as what KHRONOS has done with the one and only viable competitor.

A little while ago, distracted from this site by a lack of news about the API, I started a new personal game project. I fiddled with OpenGL for a while, but realized after a while that I was just wrapping the calls up into an interface that looked an awful lot like Direct3D. I didn’t have any intents on making the project cross platform just yet, so I switched APIs, telling myself all the while that I would go back to OpenGL when 3.0 came out. Problem is, I have no reason to anymore. There’s nothing compelling in GL3 for a developer in my position. DirectX is simply a better API, and as long as you only care about Windows (80%+ of the gaming market) there’s no reason to even try using OpenGL anymore. And what’s more: I don’t intend to ever switch back. I’ve waited patiently for nearly two years now only to be lied to and dissapinted. My faith in KHRONOS is gone, and no amount of promises will bring it back. And I think that I’m not the only one who feels like that. The whole situation saddens me, but I can’t do a thing about it.

So no, there’s never going to be any OpenGL3.0 tutorials on this site, even though that was it’s sole purpouse. There’s just no point: It’s really just 2.1 with extras. on top of that, I refuse to waste my time promoting an API that has effectively given me and many other developers the finger.

Congrats, Microsoft. Direct3D won. OpenGL is dead, killed by an owner who quite simply didn’t care.