#define MSP_GL_TEXTURE_H_
#include <msp/datafile/objectloader.h>
+#include <msp/graphics/image.h>
+#include "datatype.h"
#include "gl.h"
+#include "pixelformat.h"
#include "predicate.h"
#include "resource.h"
private:
void init();
+ void external_image(const std::string &);
void filter(TextureFilter);
void generate_mipmap(bool);
+ void image_data(const std::string &);
void mag_filter(TextureFilter);
void max_anisotropy(float);
void min_filter(TextureFilter);
~Texture();
protected:
+ static DataType get_alloc_type(PixelFormat);
+
void update_parameter(int) const;
public:
void set_min_filter(TextureFilter);
/** Sets the function to use for depth comparison. */
void set_compare_func(Predicate);
+ /// Loads a Graphics::Image from a file and uploads it to the texture.
+ virtual void load_image(const std::string &, bool srgb = false);
+
+ /** Uploads an image to the texture. If storage has not been defined, it
+ will be set to match the image. Otherwise the image must be compatible
+ with the defined storage. Semantics depend on the type of texture.
+
+ If srgb is true and storage is determined by this call, then an sRGB pixel
+ format will be used. */
+ virtual void image(const Graphics::Image &, bool srgb = false) = 0;
+
GLenum get_target() const { return target; }
unsigned get_id() const { return id; }
virtual UInt64 get_data_size() const { return 0; }
};
+
+bool is_mipmapped(TextureFilter);
+
} // namespace GL
} // namespace Msp