From 744dced516f11d072dc6176fdf2df7e464b9782e Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sat, 28 Dec 2013 17:10:36 +0200 Subject: [PATCH] Add basic support for 1D textures --- source/texture1d.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++ source/texture1d.h | 33 ++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 source/texture1d.cpp create mode 100644 source/texture1d.h 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 -- 2.43.0