///////////////////////////////////////////////////////////////////////////////
// TextureID
// - "Smart" wrapper for managing OpenGL textures
// - Automatically frees texture when destroyed
///////////////////////////////////////////////////////////////////////////////
class TextureID
{
public:
   GLenum id;

   // Construct a Texture object with no id number
   inline TextureID()                   
   // Create a new OpenGL Texture ID
   inline void create()                 
   // Deallocate the Texture ID (if one was created)
   inline void clear()                  
   // Return the ID number and drop the TextureID contents without freeing the texture.
   inline GLenum detach()               
   // Assign the Texture ID number from a GLenum (be careful not to deallocate the other one!)
   inline void operator =(GLenum newID) 
   // Extract the Texture ID number from the class
   inline operator GLenum() const       
   // Destroy the Texture (deallocate the ID)
   inline ~TextureID()                  
};