如何从SDL_Renderer中解耦SDL_Texture?

时间:2014-06-23 11:53:24

标签: c++ sdl sdl-2 decoupling

我有一个sprite类,它使用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表面,但问题是,我希望能够拥有一个不是全局的渲染对象。我想要一个分离的框架,我不知道在这种情况下如何实现它。我的第一个想法是创建一个渲染器类并将其作为构造函数参数,但这不可能发生,因为它会使事情变得复杂并且不能成为一种选择。有没有其他方法可以解耦这两个?

1 个答案:

答案 0 :(得分:1)

如果您想将Texturerenderersurface参数分离,我认为您最好将实际延迟拨打SDL_CreateTextureFromSurface,直到您实际得到这些论点。

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