So, as you might have noticed I don't use OpenGL any more, something about an outdated API and the ARB not being able to find its own arse with both hands and a map if it was given 3 tries.... however, I am apprently still subscribed to the mail stuff on the GL website, from a more optimistic time when LP was still a reality, which I had forgotten about.
So, today I got an email saying that GL3.2 had been released and because I'm always intrested in new levels of fail I decided to have a look at what has been added.
- GLSL 1.5 : no surprise here
- BGRA vertex component ordering : erm, ok
- shader fragment coordinate convention control : pass.
- Provoking Vertex control : at a guess, used to control which stream controls vertex processing.
- Seamless cube map filtering
- Fragment depth clamping : took them long enough, I'm sure NV has had this since the dawn of time
- multisampled textures and texture samples for specific sample locations
- geometry shaders
- sync/fence objects : been asking for this for some time now
So, a minor set of updates really but with some intresting effects.
First however one I didn't mention; core and compatibility profiles which superceed the compatibility extension.
Yes, that's right.. they have changed the deprecation system again which adds yet another lump in 'what combination of what?' you have to deal with.
However, it gets even more fun.
You see, by my estimate, this release of OpenGL ends support for DX9 hardware, or at least easy support.
You see, the addition of two extensions plants them firmly in DX10 land;
- multisampled textures and texture samples for specific sample locations
- geometry shaders
The former I'm 99% certain you can't do on D3D9 hardware, the latter I'm certain of it. So in order to have a conforming implimentation you either need to do the stuff in software (good luck figuring that out from your app btw) OR you have to drop anything which can't handle it in hardware.
This is made all the more amusing by two further bits of information;
- While NV have a 3.2 driver out AMD, afaik, still can't claim 3.1 support
- AMD also lack, and have lacked for some time, the extension support for geometry shaders.
Now, I'll admit that I'm one offical AMD driver revision behind (although I did try a pre-release and it was 3.0 still), so the July release might have had 3.1 support and might have had geometry shader support.
What I find more likely is that there is a gap opening up in support levels, with AMD now two revisions behind and without the man power to catch up and NV scampering off into the distance. AMD might well prove me wrong, this driver release coming might be all singing and dancing.. but I doubt it. They can't even keep their dev enviroment and tools up to date, never mind work on GL extensions for what is, in the PC space, a fringe area of intrest.
So, practical upshot?
Right now, if you want to develop a GL based game you have to limit yourself to GL3.0.
If you want to support DX9 hardware, of which there is a lot in the wild still, you need to stay with GL3.1 at least (unless there is some sane way to detect when you are about to get throw into software with your geo-shaders).
edit: I stand corrected, apprently you need D3D10 hardware to create a GL3.0 context. Well, that does make things a little easier at least. Forget GL3.x if you want a greater than D3D10 market.
In short; nothing has change for the good in the GL world, if anything it's become worse.
I think I'll upgrade my earlier statement to 'couldn't find their own arse with a map, 3 tries and a GPS reciever and coordinates for their arse'.
No, this is not right. OpenGL 3.x context can be created only on DX10 level hardware (for Nvidia and AMD). If you want to use GL on DX9 hardware, you are limited to 2.1 context.