Originally posted by Ostsol:
Just curious, but as an “old kodger” and OpenGL veteran, what do you think of the current state of the API? Do you think that the current (1.5) spec is at all cluttered or beginning to lose any of the elegence that OpenGL might have had?
Hi Ostol,
That’s a good question. Though I think you can apply some objective measures, this is often largely a question of personal preference.
People like Kurt Akeley are professional designers. They come up with designs that last a long time. I didn’t realize how much effort goes into this until I worked with Kurt. His process is very methodical and very thorough. He comes up with a really nice extension API that follows the conventions of the existing API, is simple but elegant, and minimal but sufficient. Then he challenges one of his base assumptions and reworks the design to see how it affects things.
I don’t have the patience to be a designer like Kurt, but it’s no accident that OpenGL is as elegant as it is. Even by subjective assessment, most developers think OpenGL is a clean API.
The OpenGL core, that is.
Here’s where I have my own personal bias. When adding functionality to the API as a vendor extension, or as an EXT, I think there’s a relatively low bar for aesthetics. Get something in there, do the best you can, and figure out how you really should have done it (or IF you really should have done it).
When something reaches ARB level, there should be hand-wringing about the style of the API and whether it is consistent with OpenGL convention, whether it is elegant, simple, minimal, intuitive.
As a simple example, I was against the GLhandle model for objects defined by the new GLSL extensions. The reason is not that the handle approach was inherently bad, it was that it is inconsistent with every other form of object in OpenGL and that makes it less intuitive to OpenGL developers.
So to get back to your question, I am very happy with the OpenGL core as it stands today. It has some quirks, but nothing hideous. It’s got some unpleasant extension APIs - some of which came from NVIDIA - that served (and still serve) their purpose but will never be part of the core.
The thing I most worry about with OpenGL is that in our rush to add new features to the core, we don’t go through the learning process of having vendor extensions and we don’t take the experience from those extensions and design core revisions that are as tight and consistent and elegant as they could be. This is a big danger, I think.
If you throw a bunch of junk in the trunk that was untested - by time, I mean - or an otherwise bad idea (but you didn’t know it at the time) it won’t matter. OpenGL has been the “ansi C” of real-time graphics APIs because it had a solid core.
I feel like OpenGL can move forward indefinitely without casting off any functionality from OpenGL 1.0.
Much of the future of graphics programming will revolve around language design. For better or worse, I (personally) think that belongs in the software world, where software vendors can be responsive to the needs of software developers.
OpenGL has this funny - and unfortunate - model now, where if functionality is not provided via an OpenGL implementation (driver), then it’s not provided at all. There’s no OpenGL equivalent to D3DX, and we should really ask ourselves as OpenGL developers, why not?
I actually think the lack of a standard suite of OpenGL software utility libraries that work with any compliant implementation of OpenGL is the biggest issue facing OpenGL developers today.
Well - there’s lots of rambling. These are my personal thoughts - not those of NVIDIA. They’re not intended to offend anyone. And of course, you’re free to disagree. It’s a free internet.
Thanks -
Cass