我有一个系统,其中存在类 sigleton GraphicManager、类 TexturePool 和类 Texture。
纹理在创作中有一些微妙之处。然后它构建自己,他们使用来自 GraphicManager 的 DirectX 东西和一些 d3d 常量。现在我在 Texture 类中使用 CreateInstance 方法和私有(private) cons,但对我来说,它现在不知道什么是真正的引擎,从 GraphicManager 构建它可能更好?我需要使用它的 friend 功能还是其他方法?
最佳答案
我真的不明白你的问题,但我会尽力给你一些提示。如果您在 GraphicManager 或 TexturePool 中使用 Singleton 是可以的,但是您必须小心,因为 singleton 允许您使用唯一实例,即使您不应该使用它。单例可以使代码更易于键入,但也相当危险。据我所知,您现在在 Texture 类中使用 Singleton,但我认为在您的系统中您可以拥有多个 Texture,因此它没有意义。但是,您可以在 TexturePool 类中创建一个方法来从图像文件加载纹理。像这样的东西:
Texture* TexturePool::loadTexture(std::string fileName);
然后,您需要用来创建纹理的任何东西,您都应该从 GraphicsManager 的唯一实例中获取。我希望这对您有用。
关于c++ - 设计 : GraphicManager, TexturesPool,纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078156/