From 834067248a1a579fea6488219bb658a2b81d1683 Mon Sep 17 00:00:00 2001 From: Jan Date: Fri, 13 May 2016 17:18:48 +0200 Subject: [PATCH] Reverted revert. Argh --- Core/Core.cc | 2 +- CoreApp/CMakeLists.txt | 8 +++++ .../DeveloperHelpSources/building.docu | 1 + OpenFlipper.cc | 8 +++-- PluginLib/CMakeLists.txt | 3 ++ cmake/plugin.cmake | 29 ++++++++++++++++++- common/glew_wrappers.cc | 23 +++++---------- common/glew_wrappers.hh | 4 +-- widgets/coreWidget/About.cc | 8 ++--- widgets/coreWidget/CoreWidget.cc | 4 --- widgets/coreWidget/CoreWidget.hh | 1 - widgets/glWidget/QtGLGraphicsScene.cc | 6 ++-- widgets/glWidget/simpleGLGraphicsScene.cc | 4 +-- 13 files changed, 64 insertions(+), 37 deletions(-) diff --git a/Core/Core.cc b/Core/Core.cc index 79d96ff3..f803ebc7 100644 --- a/Core/Core.cc +++ b/Core/Core.cc @@ -2035,7 +2035,7 @@ void Core::showReducedMenuBar(bool reduced) { } void Core::finishSplash() { - splash_->finish(coreWidget_); + splash_->finish(coreWidget_); } diff --git a/CoreApp/CMakeLists.txt b/CoreApp/CMakeLists.txt index 28e33f5d..f60256d3 100644 --- a/CoreApp/CMakeLists.txt +++ b/CoreApp/CMakeLists.txt @@ -7,6 +7,7 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${OPENGL_INCLUDE_DIR} + ${GLEW_INCLUDE_DIR} ${GLUT_INCLUDE_DIR} ) @@ -28,8 +29,14 @@ if( APPLE ) endforeach () link_directories ( + ${GLEW_LIBRARY_DIR} ${ADDITIONAL_PLUGINLIB_LINK_DIRS} ) + +else (APPLE) + link_directories ( + ${GLEW_LIBRARY_DIR} + ) endif(APPLE) if (WIN32) @@ -222,6 +229,7 @@ target_link_libraries (${OPENFLIPPER_PRODUCT_STRING} OpenFlipperPluginLib ${QT_LIBRARIES} ${OPENGL_LIBRARIES} + ${GLEW_LIBRARY} ${GLUT_LIBRARIES} ${COREAPP_ADDITIONAL_LINK_LIBRARIES} ${OPENFLIPPER_STATIC_PLUGINS} diff --git a/Documentation/DeveloperHelpSources/building.docu b/Documentation/DeveloperHelpSources/building.docu index c391caf7..1b183546 100644 --- a/Documentation/DeveloperHelpSources/building.docu +++ b/Documentation/DeveloperHelpSources/building.docu @@ -11,6 +11,7 @@ OpenFlipper. \section optlibs Optional libraries ( Without these libraries some functionality might not be available) diff --git a/OpenFlipper.cc b/OpenFlipper.cc index 1cdbabf6..b62e734a 100644 --- a/OpenFlipper.cc +++ b/OpenFlipper.cc @@ -446,9 +446,13 @@ int main(int argc, char **argv) } } } - + // After setting all Options from command line, build the real gui - w->init(); + w->init(); + + #ifndef __APPLE__ + initGlew(); + #endif for ( int i = 0 ; i < args.FileCount(); ++i ) w->commandLineOpen(args.File(i), openPolyMeshes); diff --git a/PluginLib/CMakeLists.txt b/PluginLib/CMakeLists.txt index 4ea8a4d1..aa24a634 100644 --- a/PluginLib/CMakeLists.txt +++ b/PluginLib/CMakeLists.txt @@ -42,12 +42,14 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${OPENGL_INCLUDE_DIR} + ${GLEW_INCLUDE_DIR} ${GLUT_INCLUDE_DIR} ${ADDITIONAL_PLUGINLIB_INCS} ${PACKAGE_INCLUDES} ) link_directories ( + ${GLEW_LIBRARY_DIR} ${ADDITIONAL_PLUGINLIB_LINK_DIRS} ) @@ -174,6 +176,7 @@ target_link_libraries (OpenFlipperPluginLib ACG ${QT_LIBRARIES} ${OPENGL_LIBRARIES} + ${GLEW_LIBRARY} ${GLUT_LIBRARIES} ${FTGL_LIBS} ${ADDITIONAL_PLUGINLIB_LIBS} diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index 9fe8513c..330c2ef0 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -16,6 +16,7 @@ # [TRANSLATION_ADDFILES file1 file2 ...] # [LICENSEMANAGER]) # + # DIRS = additional directories with source files # DEPS = required dependencies for find_package macro # OPTDEPS = optional dependencies for find_package macro, if found, a define ENABLE_ will be added automatically @@ -28,6 +29,7 @@ # INCDIRS = additional include directories # ADDSRC = additional source files # INSTALLDATA = directories that will be installed into the openflipper data directory +# GLEWDEFINITIONS = Checks glew if it defines the given definitions # # TRANSLATION_LANGUAGES = language codes for translation # TRANSLATION_ADDFILES = additional files that should be included into the translation files @@ -70,7 +72,7 @@ endmacro () macro (_get_plugin_parameters _prefix) set (_current_var _foo) set (_supported_var DIRS DEPS OPTDEPS LDFLAGSADD CFLAGSADD CDEFINITIONSADD - LIBRARIES ADD_CORE_APP_LIBRARIES LIBDIRS INCDIRS ADDSRC INSTALLDATA TRANSLATION_LANGUAGES TRANSLATION_ADDFILES) + LIBRARIES ADD_CORE_APP_LIBRARIES LIBDIRS INCDIRS ADDSRC INSTALLDATA GLEWDEFINITIONS TRANSLATION_LANGUAGES TRANSLATION_ADDFILES) set (_supported_flags LICENSEMANAGER) foreach (_val ${_supported_var}) set (${_prefix}_${_val}) @@ -374,6 +376,26 @@ macro (_plugin_licensemanagement) endif() endmacro () +#====================================================== +# check dependencies in GLEW library +# _prefix : prefix used ( usually the plugin name ) +#====================================================== +macro (_check_plugin_glew_deps _prefix ) + + foreach (_extension ${${_prefix}_GLEWDEFINITIONS}) + + acg_test_glew_definition( ${_extension} ${_prefix}_GLEW_HAS_DEFINITION_${_extension} ) + + # If the dependency is not found, we disable the plugin + if(NOT ${_prefix}_GLEW_HAS_DEFINITION_${_extension} ) + set (${_prefix}_HAS_DEPS FALSE) + acg_set (_${_prefix}_MISSING_DEPS "${_${_prefix}_MISSING_DEPS} GLEW extension ${_extension}") + endif() + + endforeach() + +endmacro () + #====================================================== @@ -416,6 +438,10 @@ function (_build_openflipper_plugin plugin) endforeach () set_property( GLOBAL PROPERTY GLOBAL_CORE_APP_LIBRARIES ${global_core_app_libraries} ) + # CHECK for GLEW definitions + #============================================================================================ + + _check_plugin_glew_deps (${_PLUGIN}) #============================================================================================ # Remember Lib dirs for bundle generation @@ -460,6 +486,7 @@ function (_build_openflipper_plugin plugin) ${${_PLUGIN}_DEPS_INCDIRS} ${${_PLUGIN}_INCDIRS} ${OPENGL_INCLUDE_DIR} + ${GLEW_INCLUDE_DIR} ${GLUT_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/OpenFlipper/PluginLib ${PACKAGE_INCLUDES} diff --git a/common/glew_wrappers.cc b/common/glew_wrappers.cc index fdbb929b..b87efe3a 100644 --- a/common/glew_wrappers.cc +++ b/common/glew_wrappers.cc @@ -48,26 +48,19 @@ \*===========================================================================*/ #include "glew_wrappers.hh" -#include +#include #include -#include -#include -DLLEXPORT void initOpenGLFunctions() { - int error = ogl_LoadFunctions(); - if(error != ogl_LOAD_SUCCEEDED) +DLLEXPORT void initGlew() { + GLenum err = glewInit(); + if (GLEW_OK != err) { - /* Problem: loading the opengl functions failed, something is seriously wrong. */ - fprintf(stderr, "Error when initializing opengl functions: %d\n",error); + /* Problem: glewInit failed, something is seriously wrong. */ + fprintf(stderr, "Error: %s\n", glewGetErrorString(err)); } } -DLLEXPORT const char * getOpenGLVersion() { - std::string version; - std::stringstream s; - - s << ogl_GetMajorVersion() << "."< -DLLEXPORT void initOpenGLFunctions(); -DLLEXPORT const char * getOpenGLVersion(); +DLLEXPORT void initGlew(); +DLLEXPORT const char * getGlewVersion(); #endif /* GLEW_WRAPPERS_HH_ */ diff --git a/widgets/coreWidget/About.cc b/widgets/coreWidget/About.cc index fc69ef55..8983937d 100644 --- a/widgets/coreWidget/About.cc +++ b/widgets/coreWidget/About.cc @@ -60,7 +60,6 @@ //== INCLUDES ================================================================= #include - #include "CoreWidget.hh" #include @@ -593,12 +592,11 @@ void CoreWidget::showAboutWidget( ) { #ifndef __APPLE__ aboutWidget_->OpenFlipperAbout->append("\n"); aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont); - aboutWidget_->OpenFlipperAbout->append(tr("OpenGL Specific Info:")); + aboutWidget_->OpenFlipperAbout->append(tr("GLEW Specific Info:")); aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont); - //TODO: rename this we are not using glew anymore - QString glewVersion = QString(getOpenGLVersion()); - aboutWidget_->OpenFlipperAbout->append(tr("OpenGL Version:\t") + glewVersion); + QString glewVersion = QString(getGlewVersion()); + aboutWidget_->OpenFlipperAbout->append(tr("GLEW Version:\t") + glewVersion); #endif // ===================================================================================== diff --git a/widgets/coreWidget/CoreWidget.cc b/widgets/coreWidget/CoreWidget.cc index 49619485..4d20eb74 100644 --- a/widgets/coreWidget/CoreWidget.cc +++ b/widgets/coreWidget/CoreWidget.cc @@ -72,7 +72,6 @@ // -------------------- Qt event Includes #include -#include "common/glew_wrappers.hh" #define WIDGET_HEIGHT 800 #define WIDGET_WIDTH 800 @@ -250,7 +249,6 @@ CoreWidget( QVector& _viewModes, #endif glWidget_ = new QGLWidget(format,0); - glWidget_->makeCurrent(); PluginFunctions::shareGLWidget (glWidget_); glView_ = new QtGLGraphicsView(stackedWidget_); @@ -319,8 +317,6 @@ CoreWidget( QVector& _viewModes, // Create examiner // ====================================================================== - initOpenGLFunctions(); - // First we analyze the scenegraph unsigned int maxPases = 1; ACG::Vec3d bbmin,bbmax; diff --git a/widgets/coreWidget/CoreWidget.hh b/widgets/coreWidget/CoreWidget.hh index 90efd1e0..ebbf9c0f 100644 --- a/widgets/coreWidget/CoreWidget.hh +++ b/widgets/coreWidget/CoreWidget.hh @@ -67,7 +67,6 @@ #include - #include "OpenFlipper/common/Types.hh" #include #include diff --git a/widgets/glWidget/QtGLGraphicsScene.cc b/widgets/glWidget/QtGLGraphicsScene.cc index 72d472c5..9e7bbe5b 100644 --- a/widgets/glWidget/QtGLGraphicsScene.cc +++ b/widgets/glWidget/QtGLGraphicsScene.cc @@ -110,11 +110,9 @@ void QtGLGraphicsScene::drawBackground(QPainter *_painter, const QRectF &_rect) static bool initialized = false; if (!initialized) { - // we use glLoadGen to manage extensions :/ + // we use GLEW to manage extensions // initialize it first - #ifndef __APPLE__ - ogl_LoadFunctions(); //maybe replace this with a call to the wrapper function. initOpenGLFunctions() - #endif + glewInit(); for (unsigned int i = 0; i < views_->size (); i++) { views_->at(i)->initializeGL (); diff --git a/widgets/glWidget/simpleGLGraphicsScene.cc b/widgets/glWidget/simpleGLGraphicsScene.cc index 62ffa7da..f17a45ec 100644 --- a/widgets/glWidget/simpleGLGraphicsScene.cc +++ b/widgets/glWidget/simpleGLGraphicsScene.cc @@ -114,10 +114,10 @@ void SimpleGLGraphicsScene::drawBackground(QPainter *_painter, const QRectF &_re if (!initialized_) { - // we use glLoadGen to manage extensions + // we use GLEW to manage extensions // initialize it first #ifndef __APPLE__ - ogl_LoadFunctions(); + glewInit(); #endif view_->initializeGL(); cursorPainter_->initializeGL (); -- GitLab