SKSpriteNode — это узел, который отображает (рендерит) SKTexture на экране в заданной позиции с дополнительным масштабированием и растяжением.
SKTexture — это класс хранения, который содержит файл изображения в формате, подходящем для рендеринга, а также дополнительную информацию, такую как прямоугольник кадра, если текстура ссылается только на меньшую часть атласа изображения/текстуры.
Одна из причин их разделения заключается в том, что вы обычно хотите, чтобы несколько спрайтов рисовались с помощью одной и той же SKTexture или из одного и того же SKTextureAtlas. Это позволяет избежать необходимости хранить в памяти копии одного и того же изображения для каждого отдельного спрайта, что легко стало бы непомерно чрезмерным. Например, текстура размером 4 МБ, используемая 100 спрайтами, по-прежнему использует 4 МБ памяти, а не 400 МБ.
Обновить, чтобы ответить на комментарий:
Термин «текстура» исходит из 70-х годов.
Текстура — это хранящееся в памяти представление изображения, отформатированное специально для использования при рендеринге. Распространенные форматы изображений (PNG, JPG, GIF и т. д.) плохо подходят для рендеринга с помощью графического чипа. Текстуры - это «формат изображения», который графическое оборудование и средства визуализации, такие как OpenGL, понимают и стандартизировали.
Если вы загружаете PNG или JPG в текстуру, формат изображения изменяется. Глубина цвета, альфа-канал, ориентация, структура памяти, метод сжатия могут измениться. Могут быть введены дополнительные данные, такие как уровни мип-карты, которые представляют собой исходную текстуру, уменьшенную на определенный процент, чтобы рисовать более удаленные полигоны с версией той же текстуры с более низким разрешением, что уменьшает алиасинг и ускоряет рендеринг.
Это только царапает поверхность, хотя. Важно помнить, что ни один движок рендеринга не работает с изображениями напрямую, они всегда конвертируются в текстуры. В основном это связано с эффективностью процесса рендеринга.
Всякий раз, когда вы указываете изображение непосредственно в API, таком как Sprite Kit, например spriteWithImageNamed:
, внутренне происходит следующее: средство визуализации сначала проверяет, существует ли текстура с заданным именем изображения, и если да, то использует ее. Если такое изображение еще не загружено, оно будет загружено, преобразовано в текстуру и сохранено с именем изображения в качестве ключа для дальнейшего использования (это называется кэшированием текстуры).
person
LearnCocos2D
schedule
28.09.2013