[QUOTE=Gedolo2;37704]Different OpenGL profiles and versions dictate what extensions are suppose to be present/supported.
Both OpenGL and OpenGL ES demand some extensions/feature to be supported. Meaning they are not optional features.[/quote]
Both of these statements are completely untrue. No version of OpenGL or OpenGL ES dictates “what extensions are suppose to be present/supported”.
Take for example ARB_vertex_attrib_binding. This is an extension. However, the functionality exposed by this extension, the specific functions and enumerators, are also part of OpenGL 4.3. This does not mean that it is not still an extension, nor does it mean that OpenGL 4.3 mandates the presence of this extension.
If you want to use this functionality, you can check the version and the extension. If the version is 4.3 or greater, or the extension string is present, then the functionality is available. That’s how it works. The functionality is provided either through the version or though the extension. In versions prior to 4.3, it is optional, provided by the extension. In 4.3 and above, it is mandatory, whether the extension is present or not.
To be sure, OpenGL/ES do require specific features to be supported for a specific version. That is exactly why optional features are exposed via extensions; the core specifications specify the baseline functionality, with extensions covering extra functionality that could be supported.
Yes. And extensions are the exact mechanism that OpenGL and ES have for exposing “SPECIFIC features” as “optional features”.
If you want to know if tessellation shaders are supported by a particular implementation, you check the EXT_tessellation_shader extension. If it is present, then the functionality is supported, in accord with that extension specification.
That is exactly what you asked for: the ability to query if an optional feature is supported.