#c #sdl #sdl-2 #decoupling
#c #sdl #сдл-2 #развязка
Вопрос:
У меня есть класс sprite, который использует SDL_Texture
SDL_Surface
вместо perfomance . Класс выглядит примерно так:
class Sprite
{
public:
...
private:
SDL_Texture *m_texture;
SDL_Rect m_blitRect;
int m_x;
int m_y;
};
Теперь проблема в том, что при создании an SDL_Texture
вам также нужен SDL_Renderer
объект, а также an SDL_Surface
для его создания. Обычно это выглядело бы примерно так:
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
Поверхность SDL может быть создана и удалена при создании текстуры, однако проблема в том, что я хочу иметь возможность иметь объект рендеринга, который не является глобальным. Мне нужен несвязанный фреймворк, и я не знаю, как добиться этого в данном случае. Моей первой мыслью было создать класс средства визуализации и использовать его в качестве аргумента конструктора, но этого не может быть, поскольку это усложнило бы ситуацию в будущем и не может быть вариантом. Есть ли какие-нибудь другие способы разделить эти два понятия?
Комментарии:
1. Есть
Texture
, который на самом деле не вызывает метод SDL_Createxxx, пока он действительно не понадобится?2. Добавьте это в качестве ответа, чтобы я мог пометить его правильно. Хотя спасибо 🙂
Ответ №1:
Если вы хотите отделить свой Texture
от параметра renderer
and surface
, я думаю, что лучше всего отложить вызов до тех SDL_CreateTextureFromSurface
пор, пока вы действительно не получите эти аргументы.
Таким образом, ваш Texture
конструктор текстур не будет использовать / нуждаться в этих аргументах.