libsegl/gltexture.h

90 lines
2.1 KiB
C++

/* libsegl - Sebas Extended GL Library
* Collection of Opengl/3D-Math helpers
*
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
* http://www.seba-geek.de
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __GLTEXTUR_H
#define __GLTEXTUR_H
#include <iostream>
#include <string>
#include <vector>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_opengl.h>
#include "sdlfuncs.h"
namespace segl {
class GLTexture {
private:
GLuint texint;
SDL_Surface *tex;
int width, height;
std::string filename; // wenn von datei geladen
// Parameter
GLint minfilter;
GLint magfilter;
GLint wraps;
GLint wrapt;
bool loaded;
bool texconverted;
bool keepsurface;
bool donotreload;
void init();
bool loadLocalSurface();
void convertLocalSurface();
static std::vector<GLTexture*> alltextures;
protected:
GLTexture(SDL_Surface*);
bool loadSurface(SDL_Surface*, bool = false);
public:
static void reloadAll();
GLTexture();
GLTexture(std::string, GLint=GL_LINEAR, GLint=GL_LINEAR, GLint=GL_REPEAT, GLint=GL_REPEAT);
~GLTexture();
//load
bool loadImage(std::string);
bool selectTexture();
void unloadTexture();
bool setParameter(GLint=0, GLint=0, GLint=0, GLint=0);
inline bool select() { return selectTexture(); }
int getW();
int getH();
bool isLoaded();
};
} // namespace segl
#endif