iphone ios ipad ios7 sprite-kit

iphone - Confusión: diferencia SKSpriteNode & SKTexture.



ios ipad (1)

Estoy confundido con SKSpriteNode y SKTexture Node. He visto en los tutoriales que SKSpriteNode se puede usar para agregar imágenes como [SKSpriteNode spritenodewithimagename: @ "someimag"]; y lo mismo está sucediendo en SKTexture como [SKTexture texturewithimge / file];

¿Cuál es la diferencia entre una Textura e Imagen? Si estamos agregando imágenes usando SKSpriteNode, entonces ¿cuál es el motivo para usar SKTexture o si usamos SKTexture y Texture Atlases? ¿Por qué agregamos imágenes para agregarlas en SKSpriteNode?

La confusión está allí, ¿cuál es la diferencia entre ambos?


SKSpriteNode es un nodo que muestra (representa) una SKTexture en la pantalla en una posición determinada, con escalado y estiramiento opcionales.

SKTexture es una clase de almacenamiento que contiene un archivo de imagen en un formato que es adecuado para el procesamiento, más información adicional como el rectángulo del cuadro si la textura hace referencia solo a una porción más pequeña del atlas de imagen / textura.

Una razón para dividir los dos es que normalmente quieres que varios sprites dibujen con la misma SKTexture o desde el mismo SKTextureAtlas. Esto evita tener que guardar copias de la misma imagen en la memoria para cada sprite individual, lo que fácilmente se volvería prohibitivo. Por ejemplo, una textura de 4 MB utilizada por 100 Sprites todavía usa 4 MB de memoria, en comparación con 400 MB.

Actualiza para responder el comentario:

El término ''textura'' se remonta a los años 70 .

Una textura es una representación en memoria de una imagen formateada específicamente para su uso en la representación. Los formatos de imagen comunes (PNG, JPG, GIF, etc.) no se prestan bien para la representación mediante un chip gráfico. Las texturas son un "formato de imagen" que el hardware de gráficos y los procesadores como OpenGL entienden y han estandarizado.

Si carga un PNG o JPG en una textura, el formato de la imagen cambia. Es la profundidad del color, el canal alfa, la orientación, el diseño de la memoria, el método de compresión puede cambiar. Se pueden introducir datos adicionales como los niveles de mip-map, que es la textura original reducida en un cierto porcentaje para dibujar polígonos más lejanos con una versión de menor resolución de la misma textura, lo que disminuye el aliasing y acelera el renderizado.

Eso solo está arañando la superficie. Lo que es importante tener en cuenta es que ningún motor de renderizado funciona con imágenes directamente, siempre se convierten en texturas. Esto tiene que ver principalmente con la eficiencia del proceso de renderizado.

Siempre que especifique una imagen directamente en una API como Sprite Kit, por ejemplo spriteWithImageNamed: entonces internamente lo que ocurre es que el renderizador primero verifica si hay una textura existente con el nombre de imagen dado, y si es así, la usa. Si todavía no hay una imagen cargada, cargará la imagen, la convertirá en una textura y la almacenará con el nombre de la imagen como clave para futuras referencias (esto se denomina almacenamiento en memoria caché de texturas).