diff --git a/Core/Core.cc b/Core/Core.cc index 79d96ff34fe716c175ce3560f317f98105cc1f2a..f803ebc7b7f68330de6e96d3cead69540498b216 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 28e33f5d6fd7957248482d757419fea01afffd08..f60256d3b34de89db1cdd0fdcc198ee13fb2e559 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/OpenFlipper.cc b/OpenFlipper.cc index 1cdbabf663921526cbc8d43a5e91ff2365bc11c1..b62e734a44230f48164eda8ee1a2776e8b916989 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 4ea8a4d184dc0e75952911c10b8b2ae3fd9cef6d..aa24a634b610cf0b25a3468fa97dd39a8905c0f5 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 9fe8513c0f4780d88f1e6c629c9fef1d12f2c83b..330c2ef05569accedbca084751d97c7d6cecc04f 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 fdbb929bb413120e37b136b9b4e67e8534c39b8f..b87efe3ac03ab565aa6632c410ca3bf3173bff88 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 fc69ef55230e007ba7e27e57bde31cf8cd97db96..8983937dfda02075c3259c14927604248664e30c 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 49619485e3c1c5bad60a1e82de9b1668ac2b2b72..4d20eb7464de62a8b1e20543656d11ad95f8ffba 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 90efd1e0b1274665ca34e41828b0c55a024206c3..ebbf9c0f25deea600df7147bfa5c314aba47b403 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 72d472c50c34f12018a9e7c245208a0ea1297f2b..9e7bbe5ba116af947d777d37a6064154aec88ae5 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 62ffa7dace73426248c41738d4707bc8146beb68..f17a45ec1168121f43438048b2e694d435b473b5 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 ();