/* QGL TextureManager Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef GLTEXTUREMANAGER_H #define GLTEXTUREMANAGER_H #include #include #include #include #include class TextureManager { public: TextureManager(QOpenGLExtraFunctions * f_): f(f_) {} virtual ~TextureManager() {} static void addSearchPath(const QString & path) { if (!search_pathes.contains(path)) search_pathes << path; } static void clearSearchPathes() { search_pathes.clear(); } static QStringList searchPathes() { return search_pathes; } static QString findFile(const QString & path); GLuint loadTexture(const QString & path, bool ownership = true, bool bump = false); GLuint loadTexture(const QImage & image, bool ownership = true, bool bump = false); QImage loadTextureImage(const QString & path, bool bump = false); void reloadTexture(GLuint tid, const QString & path); void reloadTexture(GLuint tid, const QImage & image); int textureID(const QString & path, bool bump = false) { return tex_ids[bump ? 1 : 0][path]; } QImage textureImage(const QString & path, bool bump = false) { return tex_im[bump ? 1 : 0][path]; } void addTexture(const QString & path) { tex_pathes << path; } bool loadTextures(); void deleteTextures(); void deleteTexture(const QString & name); void clearImageCache(); protected: static void convertToNormal(QImage & im); static QStringList search_pathes; QMap tex_ids[2]; QMap tex_im[2]; QStringList tex_pathes; QOpenGLExtraFunctions * f; }; #endif // GLTEXTUREMANAGER_H