93 lines
1.7 KiB
C++
93 lines
1.7 KiB
C++
//------------------------------------------------------------------------------
|
|
// Author: Gero Mueller <gero.mueller@cloo.de>
|
|
// Copyright: (c) 2006 Gero Mueller
|
|
// License: MIT License
|
|
//------------------------------------------------------------------------------
|
|
|
|
#ifndef BLUECORE_TEXTURE_MANAGER_H
|
|
#define BLUECORE_TEXTURE_MANAGER_H
|
|
|
|
// system includes
|
|
#include <map>
|
|
#include <string>
|
|
|
|
// project includes
|
|
#include "Utilities/Referenced.h"
|
|
|
|
namespace BlueCore
|
|
{
|
|
// forward declaration
|
|
class TextureManager;
|
|
|
|
class Texture : public Referenced
|
|
{
|
|
unsigned int _Id;
|
|
unsigned int _Width, _Height;
|
|
|
|
~Texture();
|
|
|
|
public:
|
|
|
|
Texture( unsigned int id, unsigned int width, unsigned int height ) :
|
|
_Id( id ),
|
|
_Width( width ),
|
|
_Height( height )
|
|
{
|
|
}
|
|
|
|
unsigned int getWidth() const
|
|
{
|
|
return _Width;
|
|
}
|
|
|
|
unsigned int getHeight() const
|
|
{
|
|
return _Height;
|
|
}
|
|
|
|
unsigned int getId() const
|
|
{
|
|
return _Id;
|
|
}
|
|
};
|
|
|
|
class TextureManager : public Referenced
|
|
{
|
|
|
|
private:
|
|
|
|
typedef std::map<std::string, Texture *> TextureMap;
|
|
|
|
TextureMap textures;
|
|
|
|
float _maxAnisotopy;
|
|
unsigned int _maxTextureSize;
|
|
unsigned int _lodDrop;
|
|
bool _textureCompression;
|
|
|
|
void clearTextures();
|
|
|
|
bool saveToCache ( const std::string &name, int levels );
|
|
|
|
bool loadFromCache (
|
|
const std::string &filename,
|
|
unsigned int &max_width,
|
|
unsigned int &max_height );
|
|
|
|
~TextureManager();
|
|
|
|
void TextureDestroySlot(Referenced *referenced);
|
|
|
|
public:
|
|
|
|
TextureManager();
|
|
|
|
Texture *loadTexture (
|
|
const std::string &filename,
|
|
int mipmapLevel = -1,
|
|
int compressionLevel = 1 );
|
|
};
|
|
}
|
|
|
|
#endif
|