#include "object.h"
#include "pose.h"
#include "program.h"
+#include "resourcemanager.h"
#include "resources.h"
#include "technique.h"
#include "texture2d.h"
namespace GL {
Resources::Resources():
- default_tex_filter(LINEAR_MIPMAP_LINEAR)
+ default_tex_filter(LINEAR_MIPMAP_LINEAR),
+ srgb_conversion(false),
+ resource_manager(0)
{
add_type<Animation>().suffix(".anim").keyword("animation");
add_type<Armature>().suffix(".arma").keyword("armature");
default_tex_filter = tf;
}
+void Resources::set_srgb_conversion(bool c)
+{
+ srgb_conversion = c;
+}
+
+void Resources::set_resource_manager(ResourceManager *m)
+{
+ resource_manager = m;
+}
+
Texture2D *Resources::create_texture2d(const string &name)
{
string ext = FS::extpart(name);
if(RefPtr<IO::Seekable> io = open_from_sources(name))
{
Graphics::Image image;
- image.load_io(*io);
+ if(!resource_manager)
+ image.load_io(*io);
- RefPtr<GL::Texture2D> tex = new GL::Texture2D;
+ RefPtr<GL::Texture2D> tex = new GL::Texture2D(resource_manager);
if(default_tex_filter==NEAREST_MIPMAP_NEAREST || default_tex_filter==NEAREST_MIPMAP_LINEAR ||
default_tex_filter==LINEAR_MIPMAP_NEAREST || default_tex_filter==LINEAR_MIPMAP_LINEAR)
tex->set_mag_filter(default_tex_filter);
tex->set_min_filter(default_tex_filter);
- tex->image(image);
+ // TODO Somehow pass the srgb flag if a resource manager is in use
+ if(resource_manager)
+ resource_manager->set_resource_location(*tex, *this, name);
+ else
+ tex->image(image, srgb_conversion);
return tex.release();
}