X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Ftexture1d.h;h=efd0517d628dc168c45f1b506a2133c673dcbcec;hb=6cee6c490ded0981c4da3f9f4ec74a41555e1a4e;hp=225cb0de2ec9f32e3f90fb2a74d818b546426090;hpb=3a1b9cbe2441ae670a97541dc8ccb0a2860c8302;p=libs%2Fgl.git diff --git a/source/core/texture1d.h b/source/core/texture1d.h index 225cb0de..efd0517d 100644 --- a/source/core/texture1d.h +++ b/source/core/texture1d.h @@ -1,13 +1,19 @@ #ifndef MSP_GL_TEXTURE1D_H_ #define MSP_GL_TEXTURE1D_H_ -#include "texture.h" +#include +#include "texture1d_backend.h" namespace Msp { namespace GL { -class Texture1D: public Texture +/** +One-dimensional texture, consisting of a single row of texels. +*/ +class Texture1D: public Texture1DBackend { + friend Texture1DBackend; + public: class Loader: public DataFile::DerivedObjectLoader { @@ -17,31 +23,29 @@ public: private: void init(); - void raw_data(const std::string &); void storage(PixelFormat, unsigned); void storage_levels(PixelFormat, unsigned, unsigned); }; private: - unsigned width; - unsigned levels; - unsigned allocated; + unsigned width = 0; + unsigned levels = 0; public: - Texture1D(); + /** Sets storage format and size and allocates memory for the texture. If + lv is zero, a complete mipmap pyramid is automatically created. Storage + cannot be changed once set. */ + void storage(PixelFormat, unsigned wd, unsigned lv = 0); - void storage(PixelFormat, unsigned, unsigned = 0); + virtual void image(unsigned level, const void *); - DEPRECATED void storage(PixelComponents c, unsigned w, unsigned l = 0) - { storage(make_pixelformat(c, UNSIGNED_BYTE), w, l); } + /** Replaces a range of texels in the texture. Allocated storage must + exist. The image data is interpreted according to the storage format and + the range must be fully inside the selected mipmap level. */ + void sub_image(unsigned level, unsigned x, unsigned wd, const void *); - void allocate(unsigned); - void image(unsigned, const void *); - DEPRECATED void image(unsigned, PixelComponents, DataType, const void *); - void sub_image(unsigned, int, unsigned, const void *); - DEPRECATED void sub_image(unsigned, int, unsigned, PixelComponents, DataType, const void *); virtual void image(const Graphics::Image &, unsigned = 0); - using Texture::image; + unsigned get_width() const { return width; } private: @@ -50,7 +54,7 @@ private: public: virtual AsyncLoader *load(IO::Seekable &, const Resources * = 0) { return 0; } - virtual std::uint64_t get_data_size() const; + virtual std::size_t get_data_size() const; virtual void unload() { } };