1 #ifndef MSP_GL_RESOURCES_H_
2 #define MSP_GL_RESOURCES_H_
4 #include <msp/datafile/collection.h>
14 class ResourceManager;
19 A collection class for GL resources. Most useful as a base class for an
20 application-specific collection.
22 class Resources: virtual public DataFile::Collection
25 class Loader: public DataFile::DerivedObjectLoader<Resources, Collection::Loader>
31 template<typename T, typename L = typename T::GenericLoader>
32 void generic(const std::string &);
37 class GenericResourceLoader: public T::GenericLoader
43 GenericResourceLoader(Resources &r): T::GenericLoader(r), resources(r) { }
46 virtual void type(const DataFile::Symbol &);
50 ResourceManager *resource_manager;
52 static Resources *global_resources;
55 Resources(bool = true);
58 static Resources &get_global();
59 static const DataFile::CollectionSource &get_builtins();
61 /** Enables or disables sRGB conversion. If enabled, textures and material
62 colors are converted from sRGB to linear color space when loaded. */
63 DEPRECATED void set_srgb_conversion(bool);
65 DEPRECATED bool get_srgb_conversion() const { return srgb_conversion; }
67 void set_resource_manager(ResourceManager *);
70 template<typename T, typename L = typename T::GenericLoader>
71 T *create_generic(const std::string &);
73 Mesh *create_mesh(const std::string &);
74 Texture *create_texture(const std::string &);
75 Module *create_module(const std::string &);
76 Program *create_program(const std::string &);
79 static void set_debug_name(const std::string &, T &);