include/gltexturend.hpp
694871da
 #ifndef GLTEXTUREND_HPP_
 #define GLTEXTUREND_HPP_
 
 
 #include <array>
 #include <cstddef>
 #include <string>
 
 #include <globject.hpp>
 #include <gltexture.hpp>
 
 
 /// Class
 
 template<std::size_t N>
 class GLTextureND : public GLTexture
 {
 public:
 
     /// Special member functions
 
     using Size = std::array<GLsizei, N>;
 
     explicit GLTextureND(
         std::string object_label,
         GLenum      target,
         GLenum      binding,
         GLenum      size_max_name,
         Size        size,
         GLenum      internal_format = 0,
         GLenum      wrap            = 0,
         GLenum      min_filter      = 0,
         GLenum      mag_filter      = 0
     );
 
     /// Core
 
     GLOBJECT_GET(Size, size);
 
 protected:
 
     /// Core
 
     std::size_t virtual data_size_() const override;
 
     /// Check
 
     void check_size_max_(GLenum size_max_name);
 
     /// String
 
     std::string static str_size_(Size size);
 
 private:
 
     /// Core
 
     Size const size_;
 };
 
 
 /// Explicit template instantiation
 
 extern template class GLTextureND<1>;
 extern template class GLTextureND<2>;
 extern template class GLTextureND<3>;
 
 
 #endif // GLTEXTUREND_HPP_