【问题标题】:Using one SDL2 renderer for multiple classes对多个类使用一个 SDL2 渲染器
【发布时间】:2018-08-15 02:43:26
【问题描述】:

我在尝试将一个渲染器链接到多个文件时遇到了困难。我尝试过使用静态渲染器,但我遇到了这个问题。我的问题是有哪些方法可以在多个类和文件中使用相同的渲染器来帮助内存使用。如果这有什么不同的话,我在 Linux 上。

【问题讨论】:

    标签: c++ sdl-2


    【解决方案1】:

    您可以在每个类中都有一个引用成员变量,在 main() 中初始化渲染器并将引用传递给类的构造函数。

    【讨论】:

      【解决方案2】:

      假设这些类中的每一个都有一个Render() 方法或类似的方法,在您需要SDL_Renderer 的地方,您可以传递对在一个地方声明的SDL_Renderer 的引用Class->Renderer(const SDL_Renderer& Renderer )。但是,这可能意味着通过各种调用堆栈传播SDL_Renderer 对象。

      另一种方法是在您的类上保留对SDL_Renderer 的引用,并将其设置在这些类的构造函数中。然后在任何需要的方法中使用您的成员引用。

      另一种方法是将SDL_Renderer 包装在一个singleton 中,在您需要它的方法中,只需从Singleton 中获取它。这样,就可以避免通过调用堆栈传播它并在您的类上保留引用。

      【讨论】:

      • 我只是想了解您提供的第二个选项。这是否意味着每个类都有一个单独的渲染器?如果是这样,那么您将构造函数中的所有渲染器和参数设置为该类的主渲染器。感谢您的帮助。
      • @Bradley,不,不是“单独”渲染。在您的类上,您声明对 SDL_Renderer 的引用。然后,在 main() 中,您使用 SDL 标准方式创建一个 SDL_Renderer*。然后,在构造类的对象时,将类的 SDL_Renderer 引用设置为在 main() 中创建的引用。作为一个引用,它是同一个对象,而不是一个单独的对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多