void RenderSystem::setupResources() { std::string rviz_path = ros::package::getPath(ROS_PACKAGE_NAME); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/textures", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/fonts", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/models", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials/scripts", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials/glsl120", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials/glsl120/nogp", "FileSystem", ROS_PACKAGE_NAME ); // Add resources that depend on a specific glsl version. // Unfortunately, Ogre doesn't have a notion of glsl versions so we can't go // the 'official' way of defining multiple schemes per material and let Ogre decide which one to use. if ( getGlslVersion() >= 150 ) { Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials/glsl150", "FileSystem", ROS_PACKAGE_NAME ); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials/scripts150", "FileSystem", ROS_PACKAGE_NAME ); } else if ( getGlslVersion() >= 120 ) { Ogre::ResourceGroupManager::getSingleton().addResourceLocation( rviz_path + "/ogre_media/materials/scripts120", "FileSystem", ROS_PACKAGE_NAME ); } else { std::string s = "Your graphics driver does not support OpenGL 2.1. Please enable software rendering before running RViz (e.g. type 'export LIBGL_ALWAYS_SOFTWARE=1')."; QMessageBox msgBox; msgBox.setText(s.c_str()); msgBox.exec(); throw std::runtime_error( s ); } // Add paths exported to the "media_export" package. std::vector<std::string> media_paths; ros::package::getPlugins( "media_export", "ogre_media_path", media_paths ); std::string delim(":"); for( std::vector<std::string>::iterator iter = media_paths.begin(); iter != media_paths.end(); iter++ ) { if( !iter->empty() ) { std::string path; int pos1 = 0; int pos2 = iter->find(delim); while( pos2 != (int)std::string::npos ) { path = iter->substr( pos1, pos2 - pos1 ); ROS_DEBUG("adding resource location: '%s'\n", path.c_str()); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( path, "FileSystem", ROS_PACKAGE_NAME ); pos1 = pos2 + 1; pos2 = iter->find( delim, pos2 + 1 ); } path = iter->substr( pos1, iter->size() - pos1 ); ROS_DEBUG("adding resource location: '%s'\n", path.c_str()); Ogre::ResourceGroupManager::getSingleton().addResourceLocation( path, "FileSystem", ROS_PACKAGE_NAME ); } } }
bool glInit() { if (gl3wInit()) { printf("Problem initializing OpenGL\n"); return false; } int maj, min, slmaj, slmin; getGlVersion(&maj, &min); getGlslVersion(&slmaj, &slmin); printf("OpenGL version: %d.%d\n", maj, min); printf("GLSL version: %d.%d\n", slmaj, slmin); return true; }