В конце концов, спрайты и текстуры - это просто изображения - блоки растровых цветовых данных (хотя иногда мы немного расширяем границы, чтобы поместить в них данные, не относящиеся к изображениям). Различие в основном в том, как мы их используем.
Обычно мы называем изображение (или часть изображения, содержащую много отдельных частей) «спрайтом», если его предназначение для рендеринга должно быть нарисовано прямо в 2D-сетке экрана, без искажения перспективы. Таким образом, то, что вы видите в запущенной игре, в основном то, что вы видите в самом файле изображения (кроме эффектов тонирования цвета / замены палитры / прозрачности). Это относится к фоновым плиткам и персонажам / интерактивным объектам в 2D-играх, картам-биллбордам, таким как частицы и более старые стили рендеринга деревьев и кустарников, а также к элементам пользовательского интерфейса и значкам в 3D-играх.
И наоборот, если мы используем изображение, чтобы обеспечить детализацию поверхности для полигонов трехмерного объекта, которые могут быть нарисованы в перспективе, мы обычно называем это изображение «текстурой». Это имя перенесено в другие области использования данных изображения, чтобы модулировать рендеринг чего-то другого, даже если они больше не относятся к текстуре в том смысле, который вы могли бы почувствовать кончиками пальцев - такими как отражения, карты искажений, наложения, маски или любые другие универсальное использование изображений, которые мы не хотим называть более конкретно, имеет тенденцию смешиваться с «текстурой» в нашей свободной номенклатуре.
Это делает границы между двумя нечеткими и не особенно строгими. Если у меня есть изображение, содержащее последовательность шлейфов огня и дыма, которые можно использовать для рисования частиц с биллбордом для эффекта взрыва, я могу назвать это «лист спрайта» или «текстура флипбука» взаимозаменяемо. Или, если у меня есть изображение набора плиток, содержащее все фоновые плитки для 2D-игры, я мог бы назвать это «текстурным атласом» сегодня, по аналогии с текстурами атласа, разработанными для 3D-игр, даже если его данные и использование в моей 2D-игре неразличимы. от того, что кто-то еще назвал бы спрайт-листом. Если у меня есть прямоугольник с геометрией, целью которого является представление одного изображения на экране, я могу назвать это «текстурированным квадратом» или «спрайтом» в зависимости от того, что я хочу подчеркнуть в отношении его использования.
(Обратите внимание, что в этом последнем примере «спрайт» обозначает как сегмент исходного изображения в наших игровых активах, так и экземпляр визуализированного игрового объекта, который использует этот сегмент изображения - еще один способ использования этой терминологии немного непоследовательно)
Вы найдете, что некоторые движки и библиотеки кодируют это различие в намерении рендеринга в свою собственную номенклатуру. Например, в Unity вы можете выбрать импорт ресурса изображения как «Sprite» - это позволяет получить дополнительный набор параметров, которые обычно желательны для изображений пользовательского интерфейса или активов 2D-игр, таких как нарезка и упаковка таблиц спрайтов, а также возможность ссылаться на них. части изображения в виде отдельных объектов в вашей сцене и в настройках объекта. В этих случаях «спрайт» часто означает «изображение (текстуру) плюс метаданные » - но он по-прежнему отображается так же, как обычные текстуры под капотом. Дополнительная упаковка удобна, поэтому нам не нужно микроуправлять ультрафиолетовыми смещениями и т. П. Везде, где мы хотим использовать изображение;