X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture1d.cpp;h=a1ee418b22381a27916c407a6d8050459c02ddb0;hp=c5e57df22843d0e0dc84675c24d08bebcaaf1c74;hb=03d3984ecd2c4e7c38b6a62b4b7a81bab69f8d40;hpb=3c46227c280bc4cd8a4487c648f2f080d5b4f7ea diff --git a/source/texture1d.cpp b/source/texture1d.cpp index c5e57df2..a1ee418b 100644 --- a/source/texture1d.cpp +++ b/source/texture1d.cpp @@ -19,7 +19,7 @@ Texture1D::Texture1D(): static Require _req(MSP_texture1D); } -void Texture1D::storage(PixelFormat fmt, unsigned wd) +void Texture1D::storage(PixelFormat fmt, unsigned wd, unsigned lv) { if(width>0) throw invalid_operation("Texture1D::storage"); @@ -28,26 +28,30 @@ void Texture1D::storage(PixelFormat fmt, unsigned wd) set_internal_format(fmt); width = wd; + levels = get_n_levels(); + if(lv) + levels = min(levels, lv); } void Texture1D::allocate(unsigned level) { if(width==0) throw invalid_operation("Texture1D::allocate"); + if(level>=levels) + throw invalid_argument("Texture1D::allocate"); if(allocated&(1<