首页 文章

如何从SDL_Renderer中解耦SDL_Texture?

提问于
浏览
0

我有一个精灵类,它使用 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 回答

  • 1

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

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

相关问题