【问题标题】:How to decouple SDL_Texture from SDL_Renderer?如何将 SDL_Texture 与 SDL_Renderer 解耦?
【发布时间】:2016-01-05 18:29:02
【问题描述】:

我有一个精灵类,它使用SDL_Texture 而不是SDL_Surface 来代替性能。这个类看起来像这样:

class Sprite
{
    public:
        ...

    private:
        SDL_Texture *m_texture;
        SDL_Rect m_blitRect;

        int m_x;
        int m_y;
};

现在的问题是,在创建 SDL_Texture 时,您还需要一个 SDL_Renderer 对象以及一个 SDL_Surface 来创建它。通常这看起来像这样:

SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);

可以在创建纹理时创建和处理 SDL 表面,但问题是,我希望能够拥有一个非全局的渲染对象。我想要一个解耦的框架,但我不知道在这种情况下如何实现。我的第一个想法是创建一个渲染器类并将其作为构造函数参数,但这不可能发生,因为它会使事情变得复杂并且不能成为一种选择。还有其他方法可以将两者解耦吗?

【问题讨论】:

  • 有一个 Texture 在实际需要之前不会调用 SDL_Createxxx 方法?
  • 将其添加为答案,以便我将其标记为正确。不过谢谢:)

标签: c++ sdl sdl-2 decoupling


【解决方案1】:

如果您想将Texturerenderersurface 参数分离,我认为最好的办法是实际延迟对SDL_CreateTextureFromSurface 的调用,直到您真正获得这些参数。

这样,您的 Texture 纹理构造函数将不会使用/不需要这些参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2021-11-02
    • 2011-04-30
    相关资源
    最近更新 更多