#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_