Verwirrung: SKSpriteNode & SKTexture Unterschied.

8

Ich bin verwirrt mit SKSpriteNode & amp; SKTexture Knoten. Ich habe in den Tutorials gesehen, dass SKSpriteNode verwendet werden kann, um ein Bild wie [SKSpriteNode spritenodewithimagename: @ "someimag"] hinzuzufügen; und dasselbe passiert in SKTexture als [SKTexture texturewithimge / file];

Was ist der Unterschied zwischen einer Textur und einem Bild? Wenn wir ein Bild hinzufügen, indem wir SKSpriteNode verwenden, dann ist der Grund dafür, SKTexture zu verwenden, oder wenn wir SKTexture und Texturatlas verwenden, warum haben wir dann ein Bild hinzugefügt, das in SKSpriteNode hinzugefügt wird.

Verwirrung ist da, was ist der Unterschied zwischen beiden?

    
Programmer 28.09.2013, 05:53
quelle

1 Antwort

34

SKSpriteNode ist ein Knoten, der eine SKTexture auf dem Bildschirm an einer bestimmten Position anzeigt (rendert) und optional skaliert und gestreckt werden kann.

SKTexture ist eine Speicherklasse, die eine Bilddatei in einem für das Rendern geeigneten Format enthält, sowie zusätzliche Informationen wie das Rahmenrechteck, wenn die Textur nur einen kleineren Teil des Bild- / Texturatlas referenziert.

Ein Grund für das Aufteilen der beiden ist, dass Sie normalerweise mehrere Sprites mit derselben SKTexture oder demselben SKTextureAtlas zeichnen möchten. Dadurch wird vermieden, dass Kopien des gleichen Bildes für jedes einzelne Sprite im Speicher gehalten werden müssen, was leicht zu verbieten wäre. Zum Beispiel verwendet eine von 100 Sprites verwendete 4-MB-Textur immer noch 4 MB Speicher, im Gegensatz zu 400 MB.

Aktualisieren, um den Kommentar zu beantworten:

Der Begriff "Textur" stammt aus den 70er Jahren .

Eine Textur ist eine speicherinterne Darstellung eines Bildes, das speziell für die Verwendung im Rendering formatiert wurde. Gängige Bildformate (PNG, JPG, GIF usw.) eignen sich nicht gut zum Rendern durch einen Grafikchip. Texturen sind ein "Bildformat", das Grafikhardware und Renderer wie OpenGL verstehen und standardisiert haben.

Wenn Sie ein PNG oder JPG in eine Textur laden, ändert sich das Format des Bildes. Die Farbtiefe, der Alphakanal, die Ausrichtung, das Speicherlayout und die Komprimierungsmethode können sich ändern. Es können zusätzliche Daten wie Mip-Map-Ebenen eingeführt werden, bei denen es sich um die ursprüngliche Textur handelt, die um einen bestimmten Prozentsatz verkleinert wird, um weiter entfernte Polygone mit einer niedrigeren Auflösung derselben Textur zu zeichnen, was das Aliasing verringert und das Rendering beschleunigt / p>

Das kratzt nur an der Oberfläche. Es ist wichtig zu beachten, dass keine Rendering-Engine direkt mit Bildern arbeitet, sondern immer in Texturen konvertiert wird. Dies hat hauptsächlich mit der Effizienz des Renderprozesses zu tun.

Immer wenn Sie ein Bild direkt in einer API wie Sprite Kit angeben, zum Beispiel spriteWithImageNamed: , geschieht intern, dass der Renderer zuerst prüft, ob es eine existierende Textur mit dem gegebenen Bildnamen gibt, und wenn ja, verwendet diese. Wenn ein solches Bild noch nicht geladen ist, wird das Bild geladen, in eine Textur konvertiert und mit dem Bildnamen als Schlüssel für zukünftige Referenz gespeichert (dies wird als Textur-Caching bezeichnet).

    
LearnCocos2D 28.09.2013, 13:08
quelle

Tags und Links