moGL
travis-test-3
Modern OpenGL wrapper, thin C++14 header-only layer on top of the OpenGL 4.5+ core spec
|
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