- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# src/TaskBasedFlockSim/OpenglTexture.h

    00001
    00002
    00003
    00004
    00005
    00006
    00007
    00008
    00009
    00010
    00011
    00012
    00013
    00014
    00015
    00016
    00017
    00018
    00019
    00020 #ifndef _OPENGL_TEXTURE_H_
    00021 #define _OPENGL_TEXTURE_H_
    00022
    00023 #include <boost\utility.hpp>
    00024 #include <GL\glew.h>
    00025 #include <boost\shared_array.hpp>
    00026 #include <boost\weak_ptr.hpp>
    00027
    00028 namespace TestFrameWork
    00029 {
    00030
    00031 typedef boost::shared_array<char> TextureData;
    00032
    00033 enum OpenglTextureFormat
    00034 {
    00035         Red,
    00036         RGB,
    00037         RGB32F,
    00038         RGBA,
    00039         RGBA32F
    00040 };
    00041
    00042 enum OpenglTextureFilter
    00043 {
    00044         Nearest,
    00045         Linear
    00046 };
    00047
    00048 enum OpenglTextureEdgeValue
    00049 {
    00050         Repeat,
    00051         MirroredRepeat,
    00052         ClampToEdge,
    00053         ClampToBorder,
    00054         Clamp
    00055 };
    00056
    00057 class OpenglTexture :
    00058         boost::noncopyable
    00059 {
    00060 public:
    00061         OpenglTexture(TextureData data, OpenglTextureFormat format, size_t width,
    00062                                   OpenglTextureFilter filter, OpenglTextureEdgeValue edge);
    00063
    00064         OpenglTexture(TextureData data, OpenglTextureFormat format, size_t width, size_t height,
    00065                                   OpenglTextureFilter filter, OpenglTextureEdgeValue edge);
    00066
    00067         OpenglTexture(TextureData data, OpenglTextureFormat format, size_t width, size_t height, size_t depth,
    00068                                   OpenglTextureFilter filter, OpenglTextureEdgeValue edge);
    00069
    00070         ~OpenglTexture(void);
    00071
    00072         void ModifyData(TextureData data, size_t width);
    00073
    00074         void ModifyData(TextureData data, size_t width, size_t height);
    00075
    00076         void ModifyData(TextureData data, size_t width, size_t height, size_t depth);
    00077
    00078         GLuint GetOpenglId(void) const;
    00079
    00080         GLenum GetTarget(void) const;
    00081
    00082         static GLenum Format2Gl(OpenglTextureFormat format);
    00083
    00084         static GLint Format2InternalFormat(OpenglTextureFormat format);
    00085
    00086         static GLfloat Filter2Gl(OpenglTextureFilter filter);
    00087
    00088         static GLint EdgeValue2Gl(OpenglTextureEdgeValue edge);
    00089
    00090 private:
    00091         GLenum m_target;
    00092
    00093         GLenum m_format;
    00094
    00095         GLint m_internalFormat;
    00096
    00097         size_t m_width;
    00098
    00099         size_t m_height;
    00100
    00101         size_t m_depth;
    00102
    00103         GLuint m_id;
    00104
    00105         void CreateTexture1D(TextureData data, GLfloat filter, GLint edge);
    00106
    00107         void CreateTexture2D(TextureData data, GLfloat filter, GLint edge);
    00108
    00109         void CreateTexture3D(TextureData data, GLfloat filter, GLint edge);
    00110
    00111         void Configure(GLfloat filter, GLint edge) const;
    00112 };
    00113
    00114 typedef boost::shared_ptr<OpenglTexture> OpenglTexturePtr;
    00115 typedef boost::weak_ptr<OpenglTexture> OpenglTextureWeakPtr;
    00116
    00117 }
    00118
    00119 #endif