我发现在我的游戏中有几个地方需要使用指向指针的设计。例如,我有一个名为
通常我喜欢在编码时采用RAII设计,这使我想到以下关系:
因为当OpenGL上下文已被拆除并且所有OpenGL状态特定的内容需要重新初始化时,例如重新创建窗口时,我只需重新创建
OpenGLRenderer
的类,它会创建网格并给出顶点/索引/纹理坐标数据、材质等属性。接着,有一个名为ResourceManifest
的类,它会从文件缓存网格/材质,并在加载这些资源时使用OpenGLRenderer
的实例来创建它们的实例。因此,这里存在一种耦合关系。通常我喜欢在编码时采用RAII设计,这使我想到以下关系:
ResourceManifest(OpenGLRenderer** renderer);
因为当OpenGL上下文已被拆除并且所有OpenGL状态特定的内容需要重新初始化时,例如重新创建窗口时,我只需重新创建
OpenGLRenderer
并让构造函数/析构函数完成所有工作,而使用它的ResourceManifest
将永远不会知道。 我想知道的是,这是否足够证明使用普通的指针对指针,是否有更现代的工具或技术可用? 例如,我一直在研究各种智能指针,但它们无法处理手头的问题,因为我想重新创建托管对象而不传递新的智能指针。
OpenGLRenderer*
成员更新为不同的渲染器。 - Jonathan WakelyRenderingEngine
类或类似的类中,然后只需传递对引擎的引用并让它管理渲染器即可。为了避免内存碎片化,应该避免在图形应用程序中不断重建动态结构。或者,您可以考虑使用观察者模式,但我认为这是过度思考了。您仍然是在反向解决问题。请考虑使用场景图。 - paddy