繁体   English   中英

如何将SDL_Texture与SDL_Renderer分离?

[英]How to decouple SDL_Texture from SDL_Renderer?

我有一个精灵类,它在SDL_Surface使用SDL_Texture代替性能。 该类如下所示:

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

如果您想使Texturerenderersurface参数脱钩,我认为最好的方法是实际延迟对SDL_CreateTextureFromSurface的调用,直到您真正获得这些参数为止。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM