class Texture2D;
/**
-A collection class for GL resources. Most useful as a base class for an
-application-specific collection.
+A collection class for GL resources.
+
+The following types of objects can be loaded:
+Animation .anim
+Armature .arma
+BasicMaterial (Material) .mat
+Camera .camera
+DirectionalLight (Light) .light
+Font .font
+KeyFrame .kframe
+Lighting .lightn
+Mesh .mesh
+Module .glsl .spv
+Object (Renderable) .object
+OccludedScene (Scene, Renderable) .scene
+OrderedScene (Scene, Renderable) .scene
+PbrMaterial (Material) .mat
+PointLight (Light) .light
+SequenceTemplate .seq
+Pose .pose
+Program .shader
+Sampler .samp
+SimpleScene (Scene, Renderable) .scene
+Technique .tech
+Texture1D (Texture) .tex
+Texture2D (Texture) .tex .png .jpg
+Texture3D (Texture) .tex
+TextureCube (Texture) .tex
+Texture2DArray (Texture) .tex
+UnlitMaterial (Material) .mat
+ZSortedScene (Scene, Renderable) .scene
+
+This class is normally used by deriving from it and adding any necessary data
+sources in the derived class.
+
+A ResourceManager can be set to manage objects derived from Resource. Bulk
+data for those objects will then be loaded in the background, without blocking
+the main thread.
*/
class Resources: virtual public DataFile::Collection
{
Loader(Resources &);
private:
- void scene(const std::string &);
+ template<typename T, typename L = typename T::GenericLoader>
+ void generic(const std::string &);
};
private:
- bool srgb_conversion;
+ template<typename T>
+ class GenericResourceLoader: public T::GenericLoader
+ {
+ private:
+ Resources &resources;
+
+ public:
+ GenericResourceLoader(Resources &r): T::GenericLoader(r), resources(r) { }
+
+ protected:
+ virtual void type(const DataFile::Symbol &);
+ };
+
ResourceManager *resource_manager;
static Resources *global_resources;
static Resources &get_global();
static const DataFile::CollectionSource &get_builtins();
- /** Enables or disables sRGB conversion. If enabled, textures and material
- colors are converted from sRGB to linear color space when loaded. */
- DEPRECATED void set_srgb_conversion(bool);
-
- DEPRECATED bool get_srgb_conversion() const { return srgb_conversion; }
-
void set_resource_manager(ResourceManager *);
protected:
- template<typename T>
+ template<typename T, typename L = typename T::GenericLoader>
T *create_generic(const std::string &);
Mesh *create_mesh(const std::string &);
- Texture2D *create_texture2d(const std::string &);
+ Texture *create_texture(const std::string &);
Module *create_module(const std::string &);
Program *create_program(const std::string &);
template<typename T>
- void set_debug_name(const std::string &, T &);
+ static void set_debug_name(const std::string &, T &);
};
} // namespace GL