Sprite: Unterschied zwischen den Versionen
I0n0s (Diskussion | Beiträge) K (Korrektur gelesen) |
|||
Zeile 1: | Zeile 1: | ||
=Sprite= | =Sprite= | ||
− | Eine Sprite ist eine 2 | + | Eine Sprite ist eine 2 dimmensionales Rechteck in einem 3 dimmensionalen Raum, dabei wird die Sprite immer auf die Szene drauf gelegt. |
− | Für eine Sprite ist nur die X,Y Koordinate sowie die Ausmaße des | + | 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. |
− | Sprites verwendet man für z.B. | + | Sprites verwendet man für z.B. pseudo 2D Spielen sowie für GUI Elemente. |
− | Dies kann durch den sogenannten Orthogonal Modus erreicht werde. Eine genauere | + | Dies kann durch den sogenannten Orthogonal Modus erreicht werde. Eine genauere Erklärung hierzu finden Sie im folgendem [[Tutorial_2D|Tutorial]]. |
==Vorteile== | ==Vorteile== | ||
− | Durch die | + | 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 | + | 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 | + | 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 | + | 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 | |
− | |||
glPushMatrix; | glPushMatrix; | ||
− | // | + | //Rotation |
glRotatef(Sprite[i].Rotation, 0, 0, 1); | glRotatef(Sprite[i].Rotation, 0, 0, 1); | ||
− | // | + | //Skalierung |
glScalef(Sprite[i].Scale); | glScalef(Sprite[i].Scale); | ||
− | // | + | //Transformation |
glTranslatef(Sprite[i].X, Sprite[i].X, Sprite[i].Layer); | glTranslatef(Sprite[i].X, Sprite[i].X, Sprite[i].Layer); | ||
DrawSprite(Sprite[i].Width,Sprite[i].Height); | DrawSprite(Sprite[i].Width,Sprite[i].Height); | ||
//Matrix vom Stack zurück holen | //Matrix vom Stack zurück holen | ||
glPopMatrix; | glPopMatrix; | ||
+ | </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 Sortieren und andere Funktionen sparen | + | 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. |
Version vom 11. November 2005, 12:40 Uhr
Inhaltsverzeichnis
Sprite
Eine Sprite ist eine 2 dimmensionales Rechteck in einem 3 dimmensionalen Raum, dabei wird die Sprite immer auf die Szene drauf 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. Sprites verwendet man für z.B. pseudo 2D Spielen sowie für GUI Elemente. Dies kann durch den sogenannten Orthogonal Modus erreicht werde. 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 Sprite in der Tiefe festlegen können und somit viel Code für die Sortieren und andere Funktionen sparen.