/*
*	texture.h
*
*	Programmé par Hillaire Sébastien
*
*
*	- utilité :
*		Interface géneralisant l'utilisation des texture OpenGL.
*
*	- version :
*		1.0
*
*	- update :
*		17/06/2004 : première version
*
*/

#ifndef TEXTURE
#define TEXTURE

#ifdef WIN32
#include "windows.h"
#endif

//bibliothèque C&C++
#include "stdio.h"
#include "math.h"

//bibliothèque OpenGL
#include "GL/gl.h"
#include "GL/glu.h"

//bibliothèque d'image
#include "ImageBMP.h"

#include "MemoryManager/DebugNew.h"

namespace RenderSystem
{

	/**
	* Class représentant les possibilités d'un texture OpenGL (enable,bind...).
	*/
	class Texture
	{
	private:


	protected:

		/**
		* l'identifiant de la texture OpenGL
		*/
		unsigned int id;

		/**
		* le type de texture OpenGL
		*/
		unsigned int target;

	public:

		/**
		* constructeur
		*/
		Texture();

		/**
		* destructeur
		*/
		virtual ~Texture();

		/**
		* permet d'accéder a l'identifiant de texture OpenGL
		*
		* @return l'identifiant de texture OpenGL
		*/
		unsigned int getId();

		/**
		* permet au type de la texture OpenGL
		*
		* @return le type de la texture OpenGL
		*/
		unsigned int getTarget();

		/**
		* permet de sélectionner la texture comme texture active
		*
		*/
		inline void bindTexture()
		{
			glBindTexture(target,id);
		}

		/**
		* permet d'activer le type de texture pour l'unité de texture courante
		*/
		inline void glEnableTexture()
		{
			glEnable(target);
		}

		/**
		* permet de désactiver le type de texture pour l'unité de texture courante
		*/
		inline void glDisableTexture()
		{
			glDisable(target);
		}

	};
};// namespace RenderSystem

#include "MemoryManager/DebugNewOff.h"

#endif
