Как отделить SDL_Texture от SDL_Renderer?

У меня есть класс спрайта, который использует 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 можно создавать и удалять при создании текстуры, однако проблема в том, что я хочу иметь объект рендеринга, который не является глобальным. Я хочу развязанный фреймворк и не знаю, как этого добиться в этом случае. Моей первой мыслью было создать класс рендерера и использовать его в качестве аргумента конструктора, но это не может произойти, поскольку это усложнит ситуацию в будущем и не может быть вариантом. Есть ли другие способы развязать их?

0

Решение

Если вы хотите отделить ваш Texture от renderer а также surface параметр, я думаю, что вам лучше всего отложить вызов на SDL_CreateTextureFromSurface пока вы на самом деле не получите эти аргументы.

Таким образом, ваш Texture конструктор текстуры не будет использовать / нуждаться в этих аргументах.

1

Другие решения


По вопросам рекламы [email protected]