Design: GraphicManager, TexturesPool, Texture

Design: GraphicManager, TexturesPool, Texture

本文关键字:TexturesPool Texture GraphicManager Design      更新时间:2023-10-16

我有一个系统,其中当前类sigleton GraphicManager,类TexturePool和类Texture。

纹理有一些微妙的创作。然后它构造自己他们使用DirectX的东西从GraphicManager和一些d3d常数。现在我在纹理类中使用CreateInstance方法和私有cons,但对我来说,它不是很好,什么纹理现在这么多关于真实的引擎,可能更好地从GraphicManager构建它?我需要使用它的朋友功能还是其他方法?

我真的不明白你的问题,但我会尽量给你一些提示。如果你在GraphicManager或TexturePool中使用Singleton是可以的,但你必须小心,因为Singleton允许你在不应该使用的情况下使用唯一实例。单例可以使代码更容易输入,但也相当危险。正如我所能理解的,你现在在纹理类中使用Singleton,但我认为在你的系统中你可以有一个以上的纹理,所以它没有意义。但是,你可以在TexturePool类中创建一个方法来从图像文件中加载纹理。比如:

Texture* TexturePool::loadTexture(std::string fileName);

然后,任何你需要用来创建纹理的东西,你应该从GraphicsManager的唯一实例中获得。我希望这对你有用。