viernes, 5 de septiembre de 2014

C++ y SFML, manejador de texturas (parte 1)

Las texturas son recursos que ocupan gran cantidad de memoria y cuya carga y copia
son operaciones costosas. Un error es tener una instancia de textura por cada sprite.

Para administrar las texturas se propone la clase TextureManager.
Es Singleton, para que sólo exista un administrador.

Las texturas se guardan en un map que contiene el path a la textura, y la textura misma.

 
#ifndef TEXTUREMANAGER_H
#define TEXTUREMANAGER_H

#include <iostream>
#include <map> #include <SFML/Graphics.hpp>
using namespace std;

class TextureManager {

private:
  TextureManager();
  TextureManager(const TextureManager & );
  TextureManager &operator= (const TextureManager & );
 
  static TextureManager* instance;
  map<string, sf::Texture> textures;
 
public:
  static TextureManager* GetInstance();
  const sf::Texture &GetTexture(string filename);
  unsigned Size();
};

#endif