moGL  travis-test-3
Modern OpenGL wrapper, thin C++14 header-only layer on top of the OpenGL 4.5+ core spec
object/texture.hpp
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #ifndef MOGL_TEXTURE_INCLUDED
00014 #define MOGL_TEXTURE_INCLUDED
00015 
00016 #include <mogl/object/handle.hpp>
00017 
00018 namespace mogl
00019 {
00020     class Texture : public Handle<GLuint>
00021     {
00022     public:
00023         Texture(GLenum target);
00024         ~Texture();
00025 
00026         Texture(const Texture& other) = delete;
00027         Texture& operator=(const Texture& other) = delete;
00028 
00029         Texture(Texture&& other) = default;
00030 
00031     public:
00032         void    bind(GLuint unit);
00033         void    setBuffer(GLenum internalformat, GLuint buffer);
00034         void    setBufferRange(GLenum internalformat, GLuint buffer,
00035                                GLintptr offset, GLsizeiptr size);
00036         void    setStorage1D(GLsizei levels, GLenum internalformat, GLsizei width);
00037         void    setStorage2D(GLsizei levels, GLenum internalformat,
00038                              GLsizei width, GLsizei height);
00039         void    setStorage3D(GLsizei levels, GLenum internalformat,
00040                              GLsizei width, GLsizei height, GLsizei depth);
00041         void    setStorage2DMultisample(GLsizei samples, GLenum internalformat,
00042                                         GLsizei width, GLsizei height,
00043                                         GLboolean fixedsamplelocations);
00044         void    setStorage3DMultisample(GLsizei samples, GLenum internalformat,
00045                                         GLsizei width, GLsizei height, GLsizei depth,
00046                                         GLboolean fixedsamplelocations);
00047         void    setSubImage1D(GLint level, GLint xoffset, GLsizei width,
00048                               GLenum format, GLenum type, const void* pixels);
00049         void    setSubImage2D(GLint level, GLint xoffset, GLint yoffset,
00050                               GLsizei width, GLsizei height, GLenum format,
00051                               GLenum type, const void* pixels);
00052         void    setSubImage3D(GLint level, GLint xoffset, GLint yoffset,
00053                               GLint zoffset, GLsizei width, GLsizei height,
00054                               GLsizei depth, GLenum format, GLenum type,
00055                               const void* pixels);
00056         void    setCompressedSubImage1D(GLint level, GLint xoffset,
00057                                         GLsizei width, GLenum format,
00058                                         GLsizei imageSize, const void* data);
00059         void    setCompressedSubImage2D(GLint level, GLint xoffset,
00060                                         GLint yoffset, GLsizei width,
00061                                         GLsizei height, GLenum format,
00062                                         GLsizei imageSize, const void* data);
00063         void    setCompressedSubImage3D(GLint level, GLint xoffset,
00064                                         GLint yoffset, GLint zoffset,
00065                                         GLsizei width, GLsizei height,
00066                                         GLsizei depth, GLenum format,
00067                                         GLsizei imageSize, const void* data);
00068         void    copySubImage1D(GLint level, GLint xoffset, GLint x, GLint y,
00069                                GLsizei width);
00070         void    copySubImage2D(GLint level, GLint xoffset, GLint yoffset,
00071                                GLint x, GLint y, GLsizei width, GLsizei height);
00072         void    copySubImage3D(GLint level, GLint xoffset, GLint yoffset,
00073                                GLint zoffset, GLint x, GLint y, GLsizei width,
00074                                GLsizei height);
00075         void    invalidate(GLint level = 0);
00076         void    invalidateSubImage(GLint level, GLint xoffset, GLint yoffset,
00077                                    GLint zoffset, GLsizei width, GLsizei height,
00078                                    GLsizei depth);
00079         void    generateMipmap();
00080         void    getImage(GLint level, GLenum format, GLenum type,
00081                          GLsizei bufSize, void* pixels);
00082         void    getCompressedImage(GLint level, GLsizei bufSize, void* pixels);
00083         GLenum  getTarget() const;
00084         template <class T> void get(GLenum property, T* value); // Direct call to glGetTextureParameter*v()
00085         template <class T> T    get(GLenum property);
00086         template <class T> void get(GLint level, GLenum property, T* value); // Direct call to glGetTextureLevelParameter*v()
00087         template <class T> T    get(GLint level, GLenum property);
00088         template <class T> void set(GLenum property, T value);
00089         bool    isHandleValid() const override final;
00090 
00091     private:
00092         const GLenum    _target;
00093     };
00094 }
00095 
00096 #include "texture.inl"
00097 
00098 #endif // MOGL_TEXTURE_INCLUDED
 All Classes Namespaces Files Functions Variables Defines