/* * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) * * This file is part of Orfeo Toolbox * * https://www.orfeo-toolbox.org/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef otb_GlVersionChecker_h #define otb_GlVersionChecker_h #include "OTBIceExport.h" namespace otb { class OTBIce_EXPORT GlVersionChecker { public: /** * Constant containing required OpenGL version for * client-application feedback messages. */ static const char * REQUIRED_GL_VERSION; /** * Constant containing required shading-language version for * client-application feedback messages. */ static const char * REQUIRED_GLSL_VERSION; /** * \return The OpenGL version used at runtime. The call to this * method requires a valid OpenGL rendering context. An * std::runtime_error() is thrown when glGetError() is different * than GL_NO_ERROR. */ static const char * GLVersion() noexcept; /** * \return The OpenGL Shading-Language version used at runtime. The * call to this method requires a valid OpenGL rendering context. An * std::runtime_error() is thrown when glGetError() is different * than GL_NO_ERROR. This method uses GL_SHADING_LANGUAGE_VERSION * which is available only if the OpenGL version is greater than * 2.0. (@see * http://www.opengl.org/sdk/docs/man2/xhtml/glGetString.xml). */ static const char * GLSLVersion() noexcept; /** * \brief Check that OpenGL required capabilities have been reached. * * \return true if OpengGL capabilities of running platform meets * the needs of the library. */ static bool CheckGLCapabilities() noexcept; /** * \brief Check that OpenGL required capabilities have been reached. * * \param glVersion The returned OpenGL version or NULL * if its query has failed. * * \param glslVersion The returned OpenGL Shading-Language version * or NULL if its query has failed. * * \return true if OpengGL capabilities of running platform meets * the needs of the library. */ static bool CheckGLCapabilities( const char * & glVersion, const char * & glslVersion ) noexcept; /** * \brief Compares to version-strings on the model of strcmp(). * * \param Left hand-side version string (runtime). If * NULL, version-string is considered 0.0.0. (\see * GlVersionChecker::SplitVersion()). * * \param Right hande-side version string (required). If * NULL, version-string is considered 0.0.0. (\see * GlVersionChecker::SplitVersion()). * * \return -1 if version0 if * version==required; +1 if version>=required. */ static int VerCmp( const char * version, const char * required ) noexcept; /** * \brief Split version string into Major.minor.release triplet. * * \param version String to split into triplet. If NULL * or empty, triplet is 0.0.0. * \param major Major number of resulting version triplet. * \param minor Minor number of resulting version triplet. * \param release Release number of resulting version triplet. * * \return true if operation has succeeded, * false otherwise. */ static bool SplitVersion( const char * version, int& major, int& minor, int& release ) noexcept; private: // Prevent instantiation GlVersionChecker() = delete; ~GlVersionChecker() = delete; GlVersionChecker( const GlVersionChecker & ) = delete; void operator = ( const GlVersionChecker & ) = delete; }; } // End namespace otb #endif