#include <msp/graphics/image.h>
#include "pixelformat.h"
#include "resource.h"
+#include "texture_backend.h"
namespace Msp {
namespace GL {
of each mipmap level are half that of the previous level. The mipmap stack
can be used for texture minification; see the Sampler class for details.
*/
-class Texture: public Resource
+class Texture: public TextureBackend, public Resource
{
- friend class Framebuffer;
- friend class PipelineState;
+ friend TextureBackend;
+
protected:
class Loader: public DataFile::CollectionObjectLoader<Texture>
{
RGB_TO_BGR
};
- unsigned id;
- unsigned target;
PixelFormat format;
PixelFormat storage_fmt;
FormatSwizzle swizzle;
bool use_srgb_format;
bool auto_gen_mipmap;
- std::string debug_name;
-
- static const int swizzle_orders[];
- static Texture *scratch_binding;
Texture(unsigned, ResourceManager * = 0);
- Texture(const Texture &);
- Texture &operator=(const Texture &);
-public:
- ~Texture();
-protected:
- void generate_id();
void set_format(PixelFormat);
- void apply_swizzle();
- void set_parameter_i(unsigned, int) const;
public:
PixelFormat get_format() const { return format; }
- void generate_mipmap();
+ using TextureBackend::generate_mipmap;
/// Loads a Graphics::Image from a file and uploads it to the texture.
virtual void load_image(const std::string &, unsigned = 0);
virtual std::uint64_t get_data_size() const { return 0; }
- void set_debug_name(const std::string &);
-
-protected:
- void bind_scratch();
-public:
- static void unbind_scratch();
+ using TextureBackend::set_debug_name;
};
} // namespace GL