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

纹理在创作中有些微妙。然后,它构造自己,使它们使用来自GraphicManager的DirectX内容和一些d3d常量。现在,我在纹理类中使用CreateInstance方法和私有弊端,但是就我而言,它对当前的引擎没有什么好处,可以通过GraphicManager进行构建更好吗?我需要使用它的朋友功能还是其他方法?

最佳答案

我真的不明白您的问题,但我会尽力给您一些提示。如果在GraphicManager或TexturePool中使用Singleton是可以的,但是您必须要小心,因为Singleton允许您使用唯一实例,即使您不应该使用。 Singleton可以使代码更易于键入,但也很危险。据我了解,您现在在Texture类中使用Singleton,但是我认为在您的系统中可以有多个Texture,所以这没有任何意义。但是,您可以在TexturePool类中创建一个方法来从图像文件加载纹理。就像是:

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


然后,用于创建纹理所需的任何内容,都应从GraphicsManager的唯一实例获取。希望对您有用。

10-01 03:41