Не так давно одной из причин использования упакованных спрайтов вместо отдельных было то, что графическое оборудование ограничивалось текстурой с двумя степенями свободы (256, 512, 1024, ...). Таким образом, вы бы потратили значительное количество памяти, не упаковывая спрайты, так как вам пришлось бы увеличить все до степеней двух измерений, прежде чем загружать их. Вокруг этого работала упаковка нескольких спрайтов в одну текстуру.
Другая причина заключается в том, что загружать один большой файл изображения с жесткого диска намного быстрее, чем загружать сотни маленьких. Это по-прежнему так, поскольку доступ к файлам требует довольно больших накладных расходов на файл, поэтому чем меньше у вас файлов, тем быстрее становятся вещи. И особенно с небольшими спрайтами вы можете легко превратить сотни файлов в один, поэтому экономия может быть весьма заметна.
Тем не менее, есть причина, почему все в одной текстуре. Для одного OpenGL больше не ограничен степенью двух текстур, поэтому подойдет любой размер. Но что более важно, упаковка всего в одну текстуру имеет негативные побочные эффекты. Например, если в игре много масштабирования, вы должны быть осторожны с границами своих спрайтов, поскольку цвета будут смешиваться с соседними спрайтами, создавая уродливые артефакты. Вы можете избежать этого в определенной степени, добавив дополнительное пространство вокруг ваших спрайтов, но это не идеальное решение. Наличие всего в одной текстуре также ограничивает то, что вы можете сделать с изображением. Для определенных эффектов, таких как, например, водопад, вы можете захотеть сделать анимацию, просто сместив UV-координаты текстуры, вы не можете сделать это так легко, когда все упаковано в одну текстуру.