00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef VRS_OPENGL_TEXTURE_MIPMAPTEXTURE3DGL_H
00019 #define VRS_OPENGL_TEXTURE_MIPMAPTEXTURE3DGL_H
00020
00021 #include <vrs/opengl/texture3dgl.h>
00022 #include <vrs/container/array.h>
00023
00024 namespace VRS {
00025
00026 class Image;
00027
00028
00029 class VRS_CORE_API MipmapTexture3DGL : public Texture3DGL
00030 {
00031 public:
00032 VRS_TYPEINFO(MipmapTexture3DGL, Texture3DGL);
00033 VRS_SERIALIZABLE(MipmapTexture3DGL);
00034
00035 MipmapTexture3DGL(
00036 SO<Iterator<SO<Iterator<SO<Image> > > > > images,
00037 TextureGL::WrapMode wrapS = TextureGL::REPEAT,
00038 TextureGL::WrapMode wrapT = TextureGL::REPEAT,
00039 TextureGL::WrapMode wrapR = TextureGL::REPEAT,
00040 TextureGL::FilterMode minFilter = TextureGL::TRILINEAR,
00041 TextureGL::FilterMode magFilter = TextureGL::LINEAR,
00042 GLfloat anisotropic = 1.0,
00043 const Matrix& matrix = Matrix(),
00044 const Color& borderColor = Color::black,
00045 GLenum internalFormat = GL_ZERO
00046 );
00057 bool operator==(const MipmapTexture3DGL& other) const;
00058
00059 virtual void setImages(SO<Iterator<SO<Iterator<SO<Image> > > > > newImages, GLenum internalFormat = GL_ZERO);
00060 virtual void setImage(int level, SO<Iterator<SO<Image> > > newImage);
00061 virtual SO<Iterator<SO<Iterator<SO<Image> > > > > getImages() const;
00062 virtual SO<Iterator<SO<Image> > > getImage(int level) const;
00063 virtual int getLevels() const;
00064
00065
00066 virtual GLenum getInternalFormat() const;
00067
00068 virtual Matrix adjustMatrix() const;
00069
00070 protected:
00071 MipmapTexture3DGL();
00072
00073 virtual void acceptChildren(std::vector<Visitable*>& appendChildrenHere) const;
00074
00075 private:
00076 SO<Array<SO<Iterator<SO<Image> > > > > images_;
00077 };
00078
00079 }
00080
00081 #endif // VRS_OPENGL_TEXTURE_MIPMAPTEXTURE3DGL_H