2013-10-03 3 views
2

Я работаю над небольшим примером SDL2, и я думаю о создании TextureManager. У меня небольшая абстракция, класс, который обрабатывает IMG_LoadTexture и SDL_RenderCopy. Во время конструктора я запускаю IMG_LoadTexture и сохраняю SDL_Texture * в переменной-члене. После этого, если вызывается метод render(), я запускаю SDL_RenderCopy. Я хочу, чтобы те абстрактные объекты Texture жили внутри TextureManager, который имеет экземпляр визуализации и обрабатывает весь рендеринг.Самый эффективный способ создания TextureManager в SDL2

Каков наилучший подход? Вектор, со всеми экземплярами Texture? Как это может быть более эффективным? Это правильная абстракция?

+0

Вы используете SDL_Texture для спрайтов (2D); нет манипуляций? – this

+0

Да, я. Следуя этим пунктам: https://github.com/Twinklebear/TwinklebearDev-Lessons/tree/master/Lesson0 – vinnylinux

+0

Предлагаю вам посмотреть [Учебники SDL] (http://www.sdltutorials.com/). Я думаю, вы можете найти на форумах свой [Класс текстуры] (http://forums.gamedesigncenter.org/viewtopic.php?f=8&t=356&sid=9fc6eee95771f9e4b64c005bf9716244) – Chemistpp

ответ

0

Тип контейнера, который наиболее эффективен, относится к тому, как часто вы добавляете, удаляете или получаете доступ к элементам, а не по типу элементов.

Вектор лучше всего, если вы их много получаете, но не вносите изменений: O (1) для произвольного доступа, но до O (N) для добавления (скорее всего, меньше), O (N) для удаления, если вы забота о заказе, O (1) в противном случае.

список хорош, если вы делаете много вставок, но все вставки списка находятся в конце списка: O (N) для доступа и удаления, но O (1) для добавления в любой конец.

Я мог бы продолжить (deque, map), но я бы сказал, что мертвые уверены, что доступ является наиболее распространенными потребностями, поэтому векторы - это путь.

Я должен задаться вопросом, не спрашиваете ли вы что-то еще, поскольку вы добавляете детали о SDL. Но ваш вопрос вопрос о том, какая абстракция даст вам максимальную эффективность. Это вопрос, который вы намеревались спросить?

Смежные вопросы