Sprite: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Sprite)
(Sprite)
Zeile 1: Zeile 1:
 
=Sprite=
 
=Sprite=
Eine Sprite ist eine 2 dimmensionales Rechteck in einem 3 dimmensionalen Raum, dabei wird die Sprite immer über die Szene gelegt.
+
Ein Sprite ist ein zweidimensionales Rechteck in einem dreidimensionalen Raum, dabei wird das Sprite immer über die Szene gelegt.
Für eine Sprite ist nur die X,Y Koordinate sowie die Ausmaße des Rechtecks von nöten. Die Tiefenkoordinate Z fällt dabei völlig weg.
+
Für ein Sprite ist nur die X/Y-Koordinate, sowie die Ausmaße des Rechtecks von nöten. Die Tiefenkoordinate Z fällt dabei völlig weg.
  
Früher (in den 80er Jahren) waren Sprites die einzig wirklich schnelle Möglichkeit Grafikobjekte auf den Bildschirm darzustellen, da nur die X und Y koordinaten angepasst werden mussten, und dann direkt in den Grafikspeicher gerendert werden konnte. Heutzutage haben Sprites ihren Vorteil verloren, da moderne Grafikkarten auch komplexe Objekte hardwarebschleunigt darstellen können.
+
Früher (in den 80er Jahren) waren Sprites die einzig wirklich schnelle Möglichkeit Grafikobjekte auf dem Bildschirm darzustellen, da nur die X- und Y-Koordinaten angepasst werden mussten und dann direkt in den Grafikspeicher gerendert werden konnte. Heutzutage haben Sprites ihren Vorteil verloren, da moderne Grafikkarten auch komplexe Objekte hardwarebeschleunigt darstellen können.
  
Sprites verwendet man heute noch für z.B. pseudo 2D Spielen sowie für GUI Elemente.
+
Sprites verwendet man heute noch für z.B. pseudo 2D Spiele sowie für GUI Elemente.
Im Unterschied zu früher wird dies durch den sogenannten Orthogonal Modus erreicht werde. Eine genauere Erklärung hierzu finden Sie im folgendem [[Tutorial_2D|Tutorial]].
+
Im Unterschied zu früher wird dies durch den sogenannten Orthogonal Modus erreicht. Eine genauere Erklärung hierzu finden Sie im folgendem [[Tutorial_2D|Tutorial]].
  
 
==Vorteile==
 
==Vorteile==
Zeile 12: Zeile 12:
 
Zu einem durch das richtige Nacheinanderzeichnen der einzelnen Sprites und zum anderen durch das Hinzuziehen der Z-Koordinate, was unsere Sprite dann über das System der Zeichenreihenfolge versetzt.
 
Zu einem durch das richtige Nacheinanderzeichnen der einzelnen Sprites und zum anderen durch das Hinzuziehen der Z-Koordinate, was unsere Sprite dann über das System der Zeichenreihenfolge versetzt.
  
OpenGL nutzt zur Darstellung der Grafiken die GPU welche um vieles leistungsfähiger ist als alternative 2D Grafikbibliotheken.
+
OpenGL nutzt zur Darstellung der Grafiken die GPU, welche um vieles leistungsfähiger ist als alternative 2D Grafikbibliotheken.
  
 
==Nachteil==
 
==Nachteil==
Wenn man nicht gerade auf die Z Koordinate zurückgreift hat man das Problem, dass man auf die Zeichenreihenfolge achten muss um ein korrektes Zeichnen zu Ermöglichen. Algorithmen zur Darstellung können somit größer werden und es kann auch dazu führen, das die Daten vorher per Hand sortiert werden müssen, was ansonsten die GPU für uns übernimmt.
+
Wenn man nicht gerade auf die Z-Koordinate zurückgreift hat man das Problem, dass man auf die Zeichenreihenfolge achten muss um ein korrektes Zeichnen zu Ermöglichen. Algorithmen zur Darstellung können somit größer werden und es kann auch dazu führen, das die Daten vorher per Hand sortiert werden müssen, was ansonsten die GPU für uns übernimmt.
  
 
==Tipp==
 
==Tipp==
Schreiben Sie eine Hilfsfunktion die die Sprites zeichnet und benutzen Sie dann folgende Reihenfolge für einen einfachen Code:
+
Schreiben Sie eine Hilfsfunktion, die die Sprites zeichnet und benutzen Sie dann folgende Reihenfolge für einen einfachen Code:
 
<pascal> //Matrix auf den Stack legen
 
<pascal> //Matrix auf den Stack legen
 
  glPushMatrix;
 
  glPushMatrix;
Zeile 32: Zeile 32:
 
</pascal>
 
</pascal>
  
Dieser Variante hat den Vorteil, dass Sie mit "Sprite[i].Layer" die Position der Sprite in der Tiefe festlegen können und somit viel Code für die Sortieren und andere Funktionen sparen.
+
Dieser Variante hat den Vorteil, dass Sie mit "Sprite[i].Layer" die Position der Sprites in der Tiefe festlegen können und somit viel Code für die Sortierung und andere Funktionen sparen.
  
 
== Siehe Auch ==
 
== Siehe Auch ==
 
[http://de.wikipedia.org/wiki/Sprite_%28Computergrafik%29 Wikipediaerklärung zu Sprites]
 
[http://de.wikipedia.org/wiki/Sprite_%28Computergrafik%29 Wikipediaerklärung zu Sprites]

Version vom 25. November 2005, 17:34 Uhr

Sprite

Ein Sprite ist ein zweidimensionales Rechteck in einem dreidimensionalen Raum, dabei wird das Sprite immer über die Szene gelegt. Für ein Sprite ist nur die X/Y-Koordinate, sowie die Ausmaße des Rechtecks von nöten. Die Tiefenkoordinate Z fällt dabei völlig weg.

Früher (in den 80er Jahren) waren Sprites die einzig wirklich schnelle Möglichkeit Grafikobjekte auf dem Bildschirm darzustellen, da nur die X- und Y-Koordinaten angepasst werden mussten und dann direkt in den Grafikspeicher gerendert werden konnte. Heutzutage haben Sprites ihren Vorteil verloren, da moderne Grafikkarten auch komplexe Objekte hardwarebeschleunigt darstellen können.

Sprites verwendet man heute noch für z.B. pseudo 2D Spiele sowie für GUI Elemente. Im Unterschied zu früher wird dies durch den sogenannten Orthogonal Modus erreicht. Eine genauere Erklärung hierzu finden Sie im folgendem Tutorial.

Vorteile

Durch die Nutzung von OpenGL kann man durch 2 Möglichkeiten Einfluss auf die Zeichenreihenfolge nehmen: Zu einem durch das richtige Nacheinanderzeichnen der einzelnen Sprites und zum anderen durch das Hinzuziehen der Z-Koordinate, was unsere Sprite dann über das System der Zeichenreihenfolge versetzt.

OpenGL nutzt zur Darstellung der Grafiken die GPU, welche um vieles leistungsfähiger ist als alternative 2D Grafikbibliotheken.

Nachteil

Wenn man nicht gerade auf die Z-Koordinate zurückgreift hat man das Problem, dass man auf die Zeichenreihenfolge achten muss um ein korrektes Zeichnen zu Ermöglichen. Algorithmen zur Darstellung können somit größer werden und es kann auch dazu führen, das die Daten vorher per Hand sortiert werden müssen, was ansonsten die GPU für uns übernimmt.

Tipp

Schreiben Sie eine Hilfsfunktion, die die Sprites zeichnet und benutzen Sie dann folgende Reihenfolge für einen einfachen Code:

 //Matrix auf den Stack legen
 glPushMatrix;
 //Rotation
 glRotatef(Sprite[i].Rotation, 0, 0, 1);
 //Skalierung
 glScalef(Sprite[i].Scale);
 //Transformation
 glTranslatef(Sprite[i].X, Sprite[i].X, Sprite[i].Layer);
 DrawSprite(Sprite[i].Width,Sprite[i].Height);
 //Matrix vom Stack zurück holen
 glPopMatrix;

Dieser Variante hat den Vorteil, dass Sie mit "Sprite[i].Layer" die Position der Sprites in der Tiefe festlegen können und somit viel Code für die Sortierung und andere Funktionen sparen.

Siehe Auch

Wikipediaerklärung zu Sprites