--- /dev/null
+#ifndef MSP_GL_RESOURCES_H_
+#define MSP_GL_RESOURCES_H_
+
+#include <msp/datafile/collection.h>
+#include "texture.h"
+
+namespace Msp {
+namespace GL {
+
+class Material;
+class Mesh;
+class Program;
+class ResourceManager;
+class Texture2D;
+
+/**
+A collection class for GL resources. Most useful as a base class for an
+application-specific collection.
+*/
+class Resources: virtual public DataFile::Collection
+{
+private:
+ TextureFilter default_tex_filter;
+ float default_tex_anisotropy;
+ bool srgb_conversion;
+ ResourceManager *resource_manager;
+
+public:
+ Resources();
+
+ static const DataFile::CollectionSource &get_builtins();
+
+ void set_default_texture_filter(TextureFilter);
+ void set_default_texture_anisotropy(float);
+
+ /** 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:
+ Material *create_material(const std::string &);
+ Mesh *create_mesh(const std::string &);
+ Texture2D *create_texture2d(const std::string &);
+ Program *create_program(const std::string &);
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif