Get rid of Win OpenGL32.DLL

Just think about the following scenario:

You have a nVidia graphics card that supports GL 3.1, and you link against your great new OpenGL_3_1.dll. Of course you want your program to run with other cards, too, so you want to code a fallback path for older versions.

But what happens when a customer of you has a card that doesn’t support GL 3.1? When starting the program, a cryptic error message with something like “OpenGL_3_1.dll not found” pops up, and the customer thinks, “stupid software, this thing is broken”. Your code won’t even start, you have no chance to revert to a fallback path.

Now you might argue: But I have a minimum hardware requirement of OpenGL 3.1. My software is not supposed to run on anything less. First of all that’s not a realistic scenario, but let’s just for the sake of the argument assume you really want to do this in a commercial software.

Ok, so you write a software that links against OpenGL_3_1.dll, and your customer has a card capable of OpenGL 3.1. But your customer doesn’t have the latest driver installed. On starting the program, instead of a descriptive error message telling the user to download and install a new driver, the error “OpenGL_3_1.dll not found” pops up. And again the customer thinks “stupid software, this thing is broken”.

You could of course dynamically load the dynamic link library using the LoadLibrary(‘OpenGL_3_1.dll’) windows function.
This returns null if OpenGL_3_1.dll is not found so you can switch to the old API.
But then you need to get every DLL functions entry point with GetProcAddress, so you might as well have just used wglGetProcAddress.

The one thing that a new DLL might be useful for is to provide a way to access the WGL_ARB_pixel_format extension without having to create a dummy window and a dummy context as a hack to get around the limitations of how windows sets pixel formats.
Perhaps a function that lets you choose a pixel format from a window device context instead of requiring a rendering context.

Any requests for modifications to OpenGL32.dll should be directed at MS, not ARB. I agree that some WGL extensions should be made “core” as far as that particular dll is concerned. And in that case I still believe that a majority of developers would use the current way of checking for WGL extensions to maintain backward compatibility with older OSes, so it would be underutilized anyway.