Я действительно не мог понять ваш вопрос, но я постараюсь дать вам несколько советов. Это нормально, если вы используете Singleton в GraphicManager или TexturePool, но вы должны быть осторожны, потому что singleton позволяет вам использовать уникальный экземпляр, даже если вы не должны. Синглтон может сделать код более простым для ввода, но и довольно опасным. Как я понял, вы сейчас используете Singleton в классе текстур, но я думаю, что в вашей системе вы можете иметь более одной текстуры, поэтому это не имеет смысла. Однако вы можете создать метод в своем классе TexturePool для загрузки текстуры из файла изображения. Что-то вроде:
Texture* TexturePool::loadTexture(std::string fileName);
Тогда все, что вам нужно использовать для создания текстуры, вы должны получить из уникального экземпляра GraphicsManager. Я надеюсь, что это может быть полезно для вас.