From: Mikko Rasa Date: Sat, 28 Dec 2013 15:10:36 +0000 (+0200) Subject: Add basic support for 1D textures X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=744dced516f11d072dc6176fdf2df7e464b9782e;p=libs%2Fgl.git Add basic support for 1D textures --- diff --git a/source/texture1d.cpp b/source/texture1d.cpp new file mode 100644 index 00000000..bcebca49 --- /dev/null +++ b/source/texture1d.cpp @@ -0,0 +1,60 @@ +#include "bindable.h" +#include "error.h" +#include "texture1d.h" + +using namespace std; + +namespace Msp { +namespace GL { + +Texture1D::Texture1D(): + Texture(GL_TEXTURE_1D), + width(0), + allocated(0) +{ } + +void Texture1D::storage(PixelFormat fmt, unsigned wd) +{ + if(width>0) + throw invalid_operation("Texture1D::storage"); + if(wd==0) + throw invalid_argument("Texture1D::storage"); + require_pixelformat(fmt); + + ifmt = fmt; + width = wd; +} + +void Texture1D::allocate(unsigned level) +{ + if(allocated&(1<>=1, ++level) ; + allocated |= (1<>level; +} + +} // namespace GL +} // namespace Msp diff --git a/source/texture1d.h b/source/texture1d.h new file mode 100644 index 00000000..9957eeb4 --- /dev/null +++ b/source/texture1d.h @@ -0,0 +1,33 @@ +#ifndef MSP_GL_TEXTURE1D_H_ +#define MSP_GL_TEXTURE1D_H_ + +#include "datatype.h" +#include "pixelformat.h" +#include "texture.h" + +namespace Msp { +namespace GL { + +class Texture1D: public Texture +{ +private: + PixelFormat ifmt; + unsigned width; + unsigned allocated; + +public: + Texture1D(); + + void storage(PixelFormat, unsigned); + void allocate(unsigned); + void image(unsigned, PixelFormat, DataType, const void *); + unsigned get_width() const { return width; } + +private: + unsigned get_level_size(unsigned); +}; + +} // namespace GL +} // namespace Msp + +#endif