#include <msp/io/memory.h>
#include "error.h"
#include "resourcemanager.h"
-#include "resources.h"
#include "texture.h"
using namespace std;
namespace Msp {
namespace GL {
-int Texture::swizzle_orders[] =
+const int Texture::swizzle_orders[] =
{
GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA,
GL_RED, GL_RED, GL_RED, GL_ONE,
Texture::Texture(GLenum t, ResourceManager *m):
id(0),
target(t),
- format(RGB8),
- storage_fmt(RGB8),
+ format(NO_PIXELFORMAT),
+ storage_fmt(format),
swizzle(NO_SWIZZLE),
use_srgb_format(false),
auto_gen_mipmap(false)
if(swizzle==NO_SWIZZLE)
return;
- if(get_gl_api()==OPENGL_ES2)
+ if(get_backend_api()==OPENGL_ES)
{
set_parameter_i(GL_TEXTURE_SWIZZLE_R, swizzle_orders[swizzle*4]);
set_parameter_i(GL_TEXTURE_SWIZZLE_G, swizzle_orders[swizzle*4+1]);
}
}
-void Texture::set_parameter_i(GLenum param, int value) const
+void Texture::set_parameter_i(unsigned param, int value) const
{
if(ARB_direct_state_access)
glTextureParameteri(id, param, value);
glTexParameteri(target, param, value);
}
-bool Texture::can_generate_mipmap()
-{
- return EXT_framebuffer_object;
-}
-
void Texture::generate_mipmap()
{
// glGenerateMipmap is defined here
}
}
-void Texture::set_auto_generate_mipmap(bool gm)
-{
- if(gm)
- static Require _req(EXT_framebuffer_object);
-
- auto_gen_mipmap = gm;
-}
-
-void Texture::load_image(const string &fn, bool)
-{
- load_image(fn, 0U);
-}
-
void Texture::load_image(const string &fn, unsigned lv)
{
Graphics::Image img;
image(img, lv);
}
-void Texture::image(const Graphics::Image &img, bool)
-{
- image(img, 0U);
-}
-
void Texture::set_debug_name(const string &name)
{
#ifdef DEBUG
add("mipmap_levels", &Loader::mipmap_levels);
}
+void Texture::Loader::finish()
+{
+ if(obj.auto_gen_mipmap)
+ obj.generate_mipmap();
+}
+
void Texture::Loader::load_external_image(Graphics::Image &img, const string &fn)
{
RefPtr<IO::Seekable> io = get_collection().open_raw(fn);
void Texture::Loader::generate_mipmap(bool gm)
{
- obj.set_auto_generate_mipmap(gm);
+ obj.auto_gen_mipmap = gm;
}
void Texture::Loader::image_data(const string &data)