/* render/textures.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_RENDER_TEXTURES_H__ #define __INCLUDED_RENDER_TEXTURES_H__ #include #include #include "render/gl.h" namespace render { const size_t MAXTEXTURES = 256; /// Texture managment class Textures { public: /// Initialize the textures registry static void init(); /// Shutdown the textures registry static void shutdown(); /// Load a texture /** Returns 0 on failure, and the texture index on success */ static size_t load(std::string name, bool filter = true); /// bind a texture for OpenGL usage /** Returns 0 on failure, and the texture index on success */ static size_t bind(std::string name, bool filter = true); /// bind a texture for OpenGL usage static size_t bind(size_t texture, bool filter = true); /// find the texture index for a given name static size_t find(std::string name); private: static void clear(); static void set_filter(bool filter); typedef std::map::iterator iterator; static std::map registry; static size_t index; static GLuint textures[MAXTEXTURES]; }; } #endif // __INCLUDED_RENDER_TEXTURES_H__