]> git.tdb.fi Git - libs/gl.git/commitdiff
Add a function to determine the active GL profile
authorMikko Rasa <tdb@tdb.fi>
Sat, 5 Nov 2016 23:37:11 +0000 (01:37 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sun, 6 Nov 2016 10:45:54 +0000 (12:45 +0200)
source/extension.cpp
source/extension.h

index 2183a965027d85550447fc77589f419789db890d..78fc7e1c3c767caf5c7ac10693ca3ebc0e947aab 100644 (file)
@@ -132,6 +132,25 @@ GLApi get_gl_api()
 #endif
 }
 
+inline GLProfile _get_gl_profile()
+{
+       if(get_gl_api()==OPENGL && get_gl_version()>=Version(3, 0))
+       {
+               int mask;
+               glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask);
+               if(mask==GL_CONTEXT_CORE_PROFILE_BIT)
+                       return CORE_PROFILE;
+       }
+
+       return COMPATIBILITY_PROFILE;
+}
+
+GLProfile get_gl_profile()
+{
+       static GLProfile profile = _get_gl_profile();
+       return profile;
+}
+
 inline Version _get_gl_version()
 {
        const char *gl_ver_ptr = reinterpret_cast<const char *>(glGetString(GL_VERSION));
index 671e4af9aac989afff2a30c9d6cec2a474120c98..85b4fc4af27e0418bf9d4c09932ad835899724f6 100644 (file)
@@ -12,6 +12,12 @@ enum GLApi
        OPENGL_ES2
 };
 
+enum GLProfile
+{
+       CORE_PROFILE,
+       COMPATIBILITY_PROFILE
+};
+
 
 struct Version
 {
@@ -66,6 +72,9 @@ bool is_supported(const std::string &);
 /** Returns the API for which the library was compiled. */
 GLApi get_gl_api();
 
+/** Returns the OpenGL profile for the active context. */
+GLProfile get_gl_profile();
+
 /** Returns the OpenGL version number, as reported by the implementation. */
 const Version &get_gl_version();