es a tu comodidad pero yo , personalmente te recomiendo poner la textura de un objeto en la clase de dicho objeto, aca te dejo una clase mia de un model 3d
class eiSprite
{
public:
eiSprite( void );
~eiSprite( void );
bool pushTexture( const char filename[] );
bool loadTexture( const char filename[], const unsigned indice );
bool unloadTexture( const GLuint indice );
bool loadModel( const char filename[] );
bool unloadModel( void );
void unloadAll( void );
bool setDrawingMode( int pMode );
int getDrawingMode( void );
void update( void );
private:
void _loadTexture( const unsigned indice );
void drawTexture( void );
void drawModel( void );
void drawModelTextured( void );
struct
{
glm::vec3 position;
glm::vec3 lookingAt;
glm::vec3 movement;
glm::vec3 rotation;
struct
{
std::vector<eiPic_t> chunk;
std::vector<unsigned> vbo;
}textures;
struct
{
std::vector<unsigned char*> bits;
unsigned size;
std::vector<unsigned> meshesSize;
std::vector<unsigned> meshesIndice;
std::vector<eiModel_Material_t> Materials;
std::vector<unsigned> materialsIndice;
unsigned vao;
unsigned vbo;
}model;
void ( eiSprite::*ptrDraw )();
}self;
};
fijate que yo creo una clase llamada "sprite" que puede ser cualquier objeto, un snake o un bloque lo que sea, y cada uno tiene una textura , si la ves en mi clase esta en la structura self ->texture, claro esto es para que te ilustres, suerte con tu juego