我有一个精灵类,它使用 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 回答
如果你想将
Texture
与renderer
和surface
参数分离,我认为你最好的做法是实际延迟调用SDL_CreateTextureFromSurface
,直到你真正得到这些参数 .这样,你的
Texture
纹理构造函数将不会使用/需要这些参数 .