读写插件包括高层、影像等文件的读写插件
1、注册AnnotationLayer
osgEarthAnnotation/AnnotationLayer.cpp
REGISTER_OSGEARTH_LAYER(annotations, AnnotationLayer);
osgEarth/Layer
#define REGISTER_OSGEARTH_LAYER(NAME,CLASS) \
extern "C" void osgdb_##NAME(void) {} \
static osgEarth::RegisterPluginLoader< osgEarth::PluginLoader<CLASS, osgEarth::Layer> > g_proxy_##CLASS_##NAME( #NAME );
osgEarth/PluginLoader
template<class T>
class RegisterPluginLoader
{
public:
RegisterPluginLoader(const std::string& name)
{
if (osgDB::Registry::instance())
{
_rw = new T(name);
osgDB::Registry::instance()->addReaderWriter(_rw.get());
}
}
};
template<typename T, typename U>
class PluginLoader : public osgDB::ReaderWriter
{
public: // Plugin stuff
PluginLoader(const std::string& name) {
supportsExtension( name, name );
}
};
2、注册ElevationLayer
osgEarth/ElevationLayer.cpp
REGISTER_OSGEARTH_LAYER(elevation, osgEarth::ElevationLayer);
3、注册ImageLayer
osgEarth/ImageLayer.cpp
REGISTER_OSGEARTH_LAYER(image, ImageLayer);
4、注册LandCoverDictionary
osgEarth/LandCover.cpp
REGISTER_OSGEARTH_LAYER(land_cover_dictionary, LandCoverDictionary);
5、注册LandCoverLayer
osgEarth/LandCoverLayer.cpp
REGISTER_OSGEARTH_LAYER(land_cover, LandCoverLayer);
6、注册ModelLay