00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef VRS_OPENGL_TEXTURE_IMAGETEXTUREARRAY2DGL_H
00026 #define VRS_OPENGL_TEXTURE_IMAGETEXTUREARRAY2DGL_H
00027
00028 #include <vrs/opengl/texturearray2dgl.h>
00029 #include <vrs/container/array.h>
00030 namespace VRS {
00031
00032 class Image;
00033
00035 class VRS_CORE_API ImageTextureArray2DGL : public TextureArray2DGL {
00036 public:
00037 ImageTextureArray2DGL(SO<Iterator<SO<Image> > > images,
00038 TextureGL::WrapMode wrapS = TextureGL::REPEAT,
00039 TextureGL::WrapMode wrapT = 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 bool unrefImageAfterBindung = false);
00057 bool operator==(const ImageTextureArray2DGL& other) const;
00058
00059 virtual void setImages(Iterator<SO<Image> > *newImages, GLenum internalFormat);
00060 virtual void setImage(int idx, Image* newImage);
00061 virtual SO<Iterator<SO<Image> > > getImages() const;
00062 virtual Image* getImage(int idx) const;
00063 virtual int getImageCount() const;
00066 virtual TextureGL::WrapMode getWrapS() const;
00067 virtual TextureGL::WrapMode getWrapT() const;
00068
00069 virtual TextureGL::FilterMode getMinFilter() const;
00070
00071 virtual GLenum getInternalFormat() const;
00072
00073 void unrefImageAfterBinding() const;
00075
00076 VRS_TYPEINFO(ImageTextureArray2DGL, TextureArray2DGL);
00077 VRS_SERIALIZABLE(ImageTextureArray2DGL);
00078
00079 protected:
00080 ImageTextureArray2DGL();
00081
00082 virtual void acceptChildren(std::vector<Visitable*>& appendChildrenHere) const;
00083
00084 friend class ImageTexture2DPainterGL;
00085
00086 private:
00087 SO<Array<SO<Image> > > images_;
00088 mutable bool unrefImageAfterBinding_;
00089 mutable GLenum unrefImageAfterBinding_TextureTarget_;
00090 mutable GLenum unrefImageAfterBinding_InternalFormat_;
00091 mutable Matrix unrefImageAfterBinding_AdjustedMatrix_;
00092 };
00093
00094 }
00095
00096 #endif // VRS_OPENGL_TEXTURE_ImageTextureArray2DGL_H