X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture3d.cpp;h=5b33c3c6e1ef9153b68a654586dc37c42b1da7d6;hp=a2d371e7856c108b6c7eac2de3284119bc735e1a;hb=HEAD;hpb=8f3ae497552ab7d3ddea7c34a411e7fdaa8722e4 diff --git a/source/texture3d.cpp b/source/texture3d.cpp deleted file mode 100644 index a2d371e7..00000000 --- a/source/texture3d.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - -#include -#include "except.h" -#include "extension.h" -#include "ilwrap.h" -#include "texture3d.h" -#include "version_1_2.h" - -using namespace std; - -namespace Msp { -namespace GL { - -Texture3D::Texture3D(): - width(0), - height(0), - depth(0) -{ - require_version(1, 3); - - target=GL_TEXTURE_3D; - bind(); -} - -void Texture3D::storage(PixelFormat f, sizei w, sizei h, sizei d, int b) -{ - if(width>0) - throw InvalidState("Textures may only be created once"); - if(w==0 || h==0 || d==0) - throw InvalidParameterValue("Invalid texture dimensions"); - - width=w; - height=h; - depth=d; - ifmt=f; - border=b; - - image(0, ifmt, UNSIGNED_BYTE, 0); -} - -void Texture3D::image(int level, PixelFormat fmt, DataType type, const void *data) -{ - maybe_bind(); - glTexImage3D(target, level, ifmt, width, height, depth, border, fmt, type, data); -} - -void Texture3D::load_image(const string &fn, int dp) -{ - Image img; - img.load_file(fn); - - unsigned w=img.get_width(); - unsigned h=img.get_height(); - unsigned d=1; - - if(dp==-1) - { - if(h%w) - throw IncompatibleData("Image height is not divisible by its width"); - d=h/w; - h=w; - } - else if(dp==-2) - { - for(d=h; d*d>h; d>>=2) ; - for(; d*d0) - d=dp; - - PixelFormat fmt=img.get_format(); - if(width==0) - storage(fmt, w, h, d, 0); - else if(w!=width || h!=height || d!=depth) - throw IncompatibleData("Image does not match texture storage"); - - image(0, fmt, UNSIGNED_INT, img.get_data()); -} - -} // namespace GL -} // namespace Msp