У меня есть задание для Университета, и моя задача - обсудить текстуры, используемые в видеоиграх, и как они развивались.
Мой главный вопрос: в чем принципиальная разница между использованием спрайта или другими методами текстуры?
Проведя небольшое исследование, я, кажется, склонен к тому, что спрайты хранят изображения в одном файле и могут использоваться для анимации и т. Д. И обычно использовались в старых видеоиграх, обычно используя спрайты в качестве всех своих игровых визуальных элементов. Теперь, в современных играх, я думаю, что спрайты используются реже, так как технологические достижения и другие текстуры доступны, например, рельефное отображение. Хотя спрайты до сих пор используются для размещения таких функций, как индикатор здоровья или текстуры на большом расстоянии.
Но каковы основные преимущества использования текстур над спрайтами?
Ответы:
В конце концов, спрайты и текстуры - это просто изображения - блоки растровых цветовых данных (хотя иногда мы немного расширяем границы, чтобы поместить в них данные, не относящиеся к изображениям). Различие в основном в том, как мы их используем.
Обычно мы называем изображение (или часть изображения, содержащую много отдельных частей) «спрайтом», если его предназначение для рендеринга должно быть нарисовано прямо в 2D-сетке экрана, без искажения перспективы. Таким образом, то, что вы видите в запущенной игре, в основном то, что вы видите в самом файле изображения (кроме эффектов тонирования цвета / замены палитры / прозрачности). Это относится к фоновым плиткам и персонажам / интерактивным объектам в 2D-играх, картам-биллбордам, таким как частицы и более старые стили рендеринга деревьев и кустарников, а также к элементам пользовательского интерфейса и значкам в 3D-играх.
И наоборот, если мы используем изображение, чтобы обеспечить детализацию поверхности для полигонов трехмерного объекта, которые могут быть нарисованы в перспективе, мы обычно называем это изображение «текстурой». Это имя перенесено в другие области использования данных изображения, чтобы модулировать рендеринг чего-то другого, даже если они больше не относятся к текстуре в том смысле, который вы могли бы почувствовать кончиками пальцев - такими как отражения, карты искажений, наложения, маски или любые другие универсальное использование изображений, которые мы не хотим называть более конкретно, имеет тенденцию смешиваться с «текстурой» в нашей свободной номенклатуре.
Это делает границы между двумя нечеткими и не особенно строгими. Если у меня есть изображение, содержащее последовательность шлейфов огня и дыма, которые можно использовать для рисования частиц с биллбордом для эффекта взрыва, я могу назвать это «лист спрайта» или «текстура флипбука» взаимозаменяемо. Или, если у меня есть изображение набора плиток, содержащее все фоновые плитки для 2D-игры, я мог бы назвать это «текстурным атласом» сегодня, по аналогии с текстурами атласа, разработанными для 3D-игр, даже если его данные и использование в моей 2D-игре неразличимы. от того, что кто-то еще назвал бы спрайт-листом. Если у меня есть прямоугольник с геометрией, целью которого является представление одного изображения на экране, я могу назвать это «текстурированным квадратом» или «спрайтом» в зависимости от того, что я хочу подчеркнуть в отношении его использования.
(Обратите внимание, что в этом последнем примере «спрайт» обозначает как сегмент исходного изображения в наших игровых активах, так и экземпляр визуализированного игрового объекта, который использует этот сегмент изображения - еще один способ использования этой терминологии немного непоследовательно)
Вы найдете, что некоторые движки и библиотеки кодируют это различие в намерении рендеринга в свою собственную номенклатуру. Например, в Unity вы можете выбрать импорт ресурса изображения как «Sprite» - это позволяет получить дополнительный набор параметров, которые обычно желательны для изображений пользовательского интерфейса или активов 2D-игр, таких как нарезка и упаковка таблиц спрайтов, а также возможность ссылаться на них. части изображения в виде отдельных объектов в вашей сцене и в настройках объекта. В этих случаях «спрайт» часто означает «изображение (текстуру) плюс метаданные » - но он по-прежнему отображается так же, как обычные текстуры под капотом. Дополнительная упаковка удобна, поэтому нам не нужно микроуправлять ультрафиолетовыми смещениями и т. П. Везде, где мы хотим использовать изображение;
источник
Спрайт - это реликт из истории компьютерных игр. Подумайте 8-битный Ataris около ок. 1980. Маленькое изображение, обычно с битовой маской покрытия (или специальным «прозрачным» цветом), которое имеет положение на экране и каким-то особым образом комбинируется с экраном. С отверстиями, где в спрайте есть «дыры», согласно карте покрытия. Обычно «просто работает» и позволяет легко создавать иллюзию движущихся объектов, обычно сохраняя и восстанавливая перезаписанные исходные пиксели экрана.
Раньше спрайты были аппаратной функцией на компьютерах, раньше вы могли рисовать / отрисовывать их с автоматическим сохранением содержимого экрана, раньше у вас их было только очень ограниченное количество (и не перекрывающихся, ура!) И раньше они были чертовски маленькими (например, 16x16) и ограниченными.
Курсор мыши - это то, что ближе всего к спрайту в наши дни (и раньше он был настоящим спрайтом в некоторых системах до 10-15 лет назад).
В настоящее время такого не существует, но слово остается. Спрайт - это, в основном, небольшое 2D-изображение, которое вы рисуете (составное) где-то Обычно, рисуя небольшой текстурированный квад.
С другой стороны, текстура - это концепция читаемого изображения, используемая в более современных графических API. Или, точнее, область памяти («буфер» в терминах современных API) с некоторыми связанными дополнительными данными, такими как размер, из которых можно выбирать с помощью некоторых средств. Обычно, но не обязательно шейдером, работающим на графическом процессоре. Обычно, но не обязательно, с нормализованными координатами, и обычно, но не обязательно, с фильтрацией (и mipmapping, и некоторым конкретным режимом границы, и, и, и ...).
Таким образом, текстура может быть источником данных, которые вы используете для рисования спрайта.
источник
A00D
/AOOC
opcode, безусловно, имели вид, изменяющий фреймбуфер draw / undraw. BOB, да, это тоже существовало, типичная вещь для Amiga. Думаю, это было ближе всего к современной текстуре (любой размер, один раз загрузить в графический процессор, много раз нарисовать).Это своего рода сравнение яблок и апельсинов. Текстура - это просто изображение, а спрайт - это изображение и то, как оно используется.
Мы по-прежнему используем спрайты для двухмерных игр, и они появляются в трехмерных играх с эффектами частиц. В настоящее время спрайты обычно относятся к определенному типу текстурированных четырехугольников или (я думаю, редко) к одному треугольнику. Даже элементы пользовательского интерфейса часто являются текстурированными квадраторами, которые я бы назвал спрайтами.
Раньше случалось так, что спрайты были предварительно загружены в память и перетаскивались (байт-за-копировались) в точки на экране (буквально, экранная память), как штампы. В некотором смысле, мы все еще делаем это. Для спрайтовых анимаций мы часто меняем примерные координаты исходной текстуры, чтобы копировать сегменты из текстур, которые будут отображаться в квадратах. Эффекты шейдеров, такие как рельефное отображение, производят выборку из текстур таким же образом и, таким образом, все еще можно использовать, скажем, для эффектов свечения в спрайтах.
Более конкретно для 2d игр, это стилистический выбор. Можно, например, создавать нарисованные от руки или нарисованные персонажи в игре, используя спрайты. Технически, это могут быть игры в Южном парке.
Таким образом, вы не можете использовать только текстуру вместо спрайта.
источник
Вот простой и короткий ответ. Я обычно думаю о спрайте как о самом объекте вместе с какими-либо функциями и текстурами, которые были применены к нему. Что касается текстуры, я в значительной степени считаю, что это просто изображение, которое можно применить к чему-либо.
источник