+++ /dev/null
-#include <msp/gl/extensions/msp_texture1d.h>
-#include "bindable.h"
-#include "error.h"
-#include "texture1d.h"
-
-using namespace std;
-
-namespace Msp {
-namespace GL {
-
-Texture1D::Texture1D():
- Texture(GL_TEXTURE_1D),
- ifmt(RGB),
- width(0),
- allocated(0)
-{
- static Require _req(MSP_texture1D);
-}
-
-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<<level))
- return;
-
- image(level, get_base_pixelformat(ifmt), UNSIGNED_BYTE, 0);
-}
-
-void Texture1D::image(unsigned level, PixelFormat fmt, DataType type, const void *data)
-{
- if(width==0)
- throw invalid_operation("Texture1D::image");
-
- unsigned w = get_level_size(level);
-
- BindRestore _bind(this);
- glTexImage1D(target, level, ifmt, w, 0, fmt, type, data);
-
- allocated |= 1<<level;
- if(gen_mipmap && level==0)
- {
- auto_generate_mipmap();
- for(; w; w>>=1, ++level) ;
- allocated |= (1<<level)-1;
- }
-}
-
-unsigned Texture1D::get_level_size(unsigned level)
-{
- return width>>level;
-}
-
-UInt64 Texture1D::get_data_size() const
-{
- return id ? width*get_pixel_size(ifmt) : 0;
-}
-
-} // namespace GL
-} // namespace Msp