c++ - 设计 : GraphicManager, TexturesPool,纹理

标签 c++ oop

我有一个系统,其中存在类 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/

相关文章:

c++ - 我应该如何命名我的 RGB channel ,使用 cv::Mat_

javascript - Javascript 中的 Array.prototype.reverse 和 Array.reverse 有什么区别?

java - 对此使用 setter/getter 。在java中

c++ - Motorbee 代码 C++

c++ - 派生类和类型检查

c++ - 更改列表项

javascript - 此类的语法是否正确,工作不正确,脚本错误。 (: line 0) (javascript p5.js)

python - 方法是否用类实例化,消耗大量内存(在 Scala 中)?

c++ - 现金流的财务建模中的继承与特定类型

c++ - 扫描字符串并在不同的 vector C++ 中存储数字和操作