X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fextension.h;h=1b149367eecd7ef9c5978138a0a41a837ee7b9c4;hb=3b159edbe4e80a2bc19c4c2fcd42cb996b9fbfe0;hp=e6c2aca045491e4a23005b87ac35d60c5cab3e64;hpb=6afbace895a7bbcf216ab8e48280ea0303ab5892;p=libs%2Fgl.git diff --git a/source/extension.h b/source/extension.h index e6c2aca0..1b149367 100644 --- a/source/extension.h +++ b/source/extension.h @@ -6,10 +6,31 @@ namespace Msp { namespace GL { +enum GLApi +{ + OPENGL, + OPENGL_ES2 +}; + +enum GLProfile +{ + CORE_PROFILE, + COMPATIBILITY_PROFILE +}; + + struct Version { unsigned short major; unsigned short minor; + + Version(); + Version(unsigned short, unsigned short); + Version(const std::string &); + + bool operator>=(const Version &) const; + bool operator<(const Version &o) const { return !(*this>=o); } + operator bool() const { return major || minor; } }; @@ -47,14 +68,28 @@ struct Require typedef void ExtFunc(); -/** Indicates whether an extension is supported. */ +/** Checks for extension support. Only intended for internal use. */ bool is_supported(const std::string &); +/** Checks for OpenGL version support. Only intended for internal use. */ +bool is_supported(const Version &, const Version & = Version()); + +/** Indicates whether an extension has been disabled, either explicitly through +the MSPGL_DISABLE_EXTENSIONS environment variable or implicitly as a workaround +for a driver bug. Only intended for internal use. */ +bool is_disabled(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(); -/** Indicates whether the OpenGL version is at least a.b. */ -bool is_version_at_least(unsigned a, unsigned b); +/** Returns the GLSL version number, as reported by the implementation. */ +const Version &get_glsl_version(); /** Returns the address of an extension function. Only indended for internal use. */