On my machine (GeForceFX 5800 Ultra, latest drivers), the symbols returned by glGetString(GL_EXTENSIONS) does not include the extensions that have been promoted to core OpenGL functions. For example, GL_ARB_load_transpose_matrixf is not included, even though I can successfully call it.
This seems to be in direct violation of the OpenGL specification (Section H2: Promoting Extensions to Core Features) which states that when an extension is promoted to the core, vendors should continue to export the old extension string.
In addition, unless I am mistaken, this makes it impossible to implement correct application behavior on NVidia cards in the case where the GL client and server are on separate machines with different levels of OpenGL support. This is because the machine running the program has no (reliable) mechanism for determining if the display machine supports a given extension. However, if GL_EXTENSIONS was a complete list of supported extensions (as the OpenGL spec requires) then I could check its value to determine if glTransposeMatrixfARB was supported on the display machine.
It’s possible that I am mis-reading the spec – could someone from NVidia please clarify this issue?
thanks
chris