/* * Copyright © 2008 Ben Smith * Copyright © 2010-2011 Linaro Limited * * This file is part of the glmark2 OpenGL (ES) 2.0 benchmark. * * glmark2 is free software: you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * glmark2 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 General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * glmark2. If not, see . * * Authors: * Ben Smith (original glmark benchmark) * Alexandros Frantzis (glmark2) */ #ifndef GLMARK2_TEXTURE_H_ #define GLMARK2_TEXTURE_H_ #include "gl-headers.h" #include #include /** * A descriptor for a texture file. */ class TextureDescriptor { public: enum FileType { FileTypeUnknown, FileTypePNG, FileTypeJPEG, }; TextureDescriptor(const std::string& name, const std::string& pathname, FileType filetype) : name_(name), pathname_(pathname), filetype_(filetype) {} ~TextureDescriptor() {} const std::string& pathname() const { return pathname_; } FileType filetype() const { return filetype_; } private: std::string name_; std::string pathname_; FileType filetype_; TextureDescriptor(); }; typedef std::map TextureMap; class Texture { public: /** * Load a texture by name. * * You must initialize the available texture collection using * Texture::find_textures() before using this method. * * @name: the texture name * * @return: true if the operation succeeded, false otherwise */ static bool load(const std::string &name, GLuint *pTexture, ...); /** * Locate all available textures. * * This method scans the built-in data paths and builds a database of usable * textures available to scenes. Map is available on a read-only basis to * scenes that might find it useful for listing textures, etc. * * @return: a map containing information about the located textures */ static const TextureMap& find_textures(); }; #endif