OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Texture1D.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 // -*-c++-*-
15 
16 #ifndef OSG_TEXTURE1D
17 #define OSG_TEXTURE1D 1
18 
19 #include <osg/Texture>
20 
21 #ifndef GL_TEXTURE_1D
22  #define GL_TEXTURE_1D 0x0DE0
23 #endif
24 
25 namespace osg {
26 
31 {
32 
33  public :
34 
35  Texture1D();
36 
37  Texture1D(Image* image);
38 
40  Texture1D(const Texture1D& text,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
41 
43 
45  virtual int compare(const StateAttribute& rhs) const;
46 
47  virtual GLenum getTextureTarget() const { return GL_TEXTURE_1D; }
48 
50  void setImage(Image* image);
51 
53  Image* getImage() { return _image.get(); }
54 
56  inline const Image* getImage() const { return _image.get(); }
57 
58  inline unsigned int& getModifiedCount(unsigned int contextID) const
59  {
60  // get the modified count for the current contextID.
61  return _modifiedCount[contextID];
62  }
63 
64 
66  virtual void setImage(unsigned int, Image* image) { setImage(image); }
67 
69  virtual Image* getImage(unsigned int) { return _image.get(); }
70 
72  virtual const Image* getImage(unsigned int) const { return _image.get(); }
73 
75  virtual unsigned int getNumImages() const { return 1; }
76 
77 
80  inline void setTextureWidth(int width) { _textureWidth = width; }
81 
83  virtual int getTextureWidth() const { return _textureWidth; }
84  virtual int getTextureHeight() const { return 1; }
85  virtual int getTextureDepth() const { return 1; }
86 
87 
89  {
90  public:
91  virtual void load(const Texture1D& texture,State& state) const = 0;
92  virtual void subload(const Texture1D& texture,State& state) const = 0;
93  };
94 
95  void setSubloadCallback(SubloadCallback* cb) { _subloadCallback = cb;; }
96 
97  SubloadCallback* getSubloadCallback() { return _subloadCallback.get(); }
98 
99  const SubloadCallback* getSubloadCallback() const { return _subloadCallback.get(); }
100 
101 
105  void setNumMipmapLevels(unsigned int num) const { _numMipmapLevels=num; }
106 
108  unsigned int getNumMipmapLevels() const { return _numMipmapLevels; }
109 
110 
115  void copyTexImage1D(State& state, int x, int y, int width);
116 
121  void copyTexSubImage1D(State& state, int xoffset, int x, int y, int width);
122 
123 
126  virtual void apply(State& state) const;
127 
128  protected :
129 
130  virtual ~Texture1D();
131 
132  virtual void computeInternalFormat() const;
133  void allocateMipmap(State& state) const;
134 
137  void applyTexImage1D(GLenum target, Image* image, State& state, GLsizei& width, GLsizei& numMipmapLevels) const;
138 
139 
145 
147  mutable GLsizei _textureWidth;
148 
150  mutable GLsizei _numMipmapLevels;
151 
153 
155  mutable ImageModifiedCount _modifiedCount;
156 
157 
158 };
159 
160 }
161 
162 #endif
virtual Image * getImage(unsigned int)
Definition: Texture1D.h:69
#define OSG_EXPORT
Definition: Export.h:43
GLsizei _textureWidth
Definition: Texture1D.h:147
unsigned int getNumMipmapLevels() const
Definition: Texture1D.h:108
void setNumMipmapLevels(unsigned int num) const
Definition: Texture1D.h:105
buffered_value< unsigned int > ImageModifiedCount
Definition: Texture1D.h:154
void setTextureWidth(int width)
Definition: Texture1D.h:80
ref_ptr< Image > _image
Definition: Texture1D.h:144
virtual const Image * getImage(unsigned int) const
Definition: Texture1D.h:72
virtual unsigned int getNumImages() const
Definition: Texture1D.h:75
const Image * getImage() const
Definition: Texture1D.h:56
ref_ptr< SubloadCallback > _subloadCallback
Definition: Texture1D.h:152
GLint GLenum GLsizei width
Definition: GLU.h:71
virtual int getTextureHeight() const
Definition: Texture1D.h:84
GLsizei _numMipmapLevels
Definition: Texture1D.h:150
#define GL_TEXTURE_1D
Definition: Texture1D.h:22
void setSubloadCallback(SubloadCallback *cb)
Definition: Texture1D.h:95
virtual GLenum getTextureTarget() const
Definition: Texture1D.h:47
Image * getImage()
Definition: Texture1D.h:53
#define META_StateAttribute(library, name, type)
virtual void setImage(unsigned int, Image *image)
Definition: Texture1D.h:66
const SubloadCallback * getSubloadCallback() const
Definition: Texture1D.h:99
ImageModifiedCount _modifiedCount
Definition: Texture1D.h:155
Definition: AlphaFunc.h:19
unsigned int & getModifiedCount(unsigned int contextID) const
Definition: Texture1D.h:58
SubloadCallback * getSubloadCallback()
Definition: Texture1D.h:97
virtual int getTextureDepth() const
Definition: Texture1D.h:85
virtual int getTextureWidth() const
Definition: Texture1D.h:83