У меня есть класс спрайта, который использует 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
от renderer
а также surface
параметр, я думаю, что вам лучше всего отложить вызов на SDL_CreateTextureFromSurface
пока вы на самом деле не получите эти аргументы.
Таким образом, ваш Texture
конструктор текстуры не будет использовать / нуждаться в этих аргументах.