Stack: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (Paragraphen umsortiert) |
(→Siehe Auch) |
||
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Ein Stack (Stapel, Stapelspeicher ''veraltet auch Kellerspeicher'') ist eine Datenstruktur welche Daten nach dem LIFO Prinzip speichert. | + | Ein Stack (Stapel, Stapelspeicher, ''veraltet auch Kellerspeicher'') ist eine Datenstruktur, welche Daten nach dem LIFO-Prinzip speichert. |
==Was ist LIFO?== | ==Was ist LIFO?== | ||
Zeile 5: | Zeile 5: | ||
LIFO steht für ''Last In - First Out'', d.h. das zuletzt gespeicherte Datum wird zuerst entnommen. | LIFO steht für ''Last In - First Out'', d.h. das zuletzt gespeicherte Datum wird zuerst entnommen. | ||
− | Im realen Leben findet man das LIFO Prinzip bei einem Bücherstapel. Bei selbigen sollte man vermeiden Bücher aus der | + | Im realen Leben findet man das LIFO Prinzip bei einem Bücherstapel. Bei selbigen sollte man vermeiden, Bücher aus der Mitte zu entfernen. Am sichersten ist es immer, das oberste Buch zu entfernen. |
Zeile 15: | Zeile 15: | ||
==OpenGL Relevanz== | ==OpenGL Relevanz== | ||
− | Stacks finden an verschiedenen Stellen innerhalb der OpenGL Verwendung. So existiert für die 3 Hauptmatrixmodi (siehe [[glMatrixMode]]) jeweils ein eigener | + | Stacks finden an verschiedenen Stellen innerhalb der OpenGL Verwendung. So existiert für die 3 Hauptmatrixmodi (siehe [[glMatrixMode]]) jeweils ein eigener [[Matrixstack]]. |
− | Für Eigenschaften wie z.B. die Farbe, oder welche Tests aktiv sind existiert der Attribut-Stack (siehe [[glPushAttrib]]). | + | Für Eigenschaften wie z.B. die Farbe, oder welche Tests aktiv sind, existiert der Attribut-Stack (siehe [[glPushAttrib]]). |
− | Für die [[Selektion]] existiert der Name-Stack welcher [[OpenGL Name|OpenGL | + | Für die [[Selektion]] existiert der Name-Stack, welcher [[OpenGL Name|OpenGL-Namen]] speichert. |
− | |||
− | |||
+ | Die maximale Höhe/Tiefe (Menge an Informationen) ist implementationsabhängig und kann mit [[glGet]] abgefragt werden. (Als Parameter dienen die GL_MAX_''STACKNAME''_STACK_DEPTH Konstanten.) | ||
==OpenGL Funktionen== | ==OpenGL Funktionen== | ||
− | [[glPushAttrib]], [[glPushClientAttrib]], [[glPushMatrix]] | + | * [[glPushAttrib]], [[glPushClientAttrib]], [[glPushMatrix]] |
− | + | * [[glPopAttrib]], [[glPopClientAttrib]], [[glPopMatrix]] | |
==Siehe Auch== | ==Siehe Auch== | ||
− | [[Queue]], [[FIFO]] | + | * [[Queue]], [[FIFO]] |
Aktuelle Version vom 25. August 2018, 20:06 Uhr
Ein Stack (Stapel, Stapelspeicher, veraltet auch Kellerspeicher) ist eine Datenstruktur, welche Daten nach dem LIFO-Prinzip speichert.
Inhaltsverzeichnis
Was ist LIFO?
LIFO steht für Last In - First Out, d.h. das zuletzt gespeicherte Datum wird zuerst entnommen.
Im realen Leben findet man das LIFO Prinzip bei einem Bücherstapel. Bei selbigen sollte man vermeiden, Bücher aus der Mitte zu entfernen. Am sichersten ist es immer, das oberste Buch zu entfernen.
Implementation
Stacks können mittels einfach verketteten Listen implementiert werden.
Die Methode Push() fügt eine neues Element am Kopf der Liste an, Pop() entfernt das erste Element der Liste.
OpenGL Relevanz
Stacks finden an verschiedenen Stellen innerhalb der OpenGL Verwendung. So existiert für die 3 Hauptmatrixmodi (siehe glMatrixMode) jeweils ein eigener Matrixstack.
Für Eigenschaften wie z.B. die Farbe, oder welche Tests aktiv sind, existiert der Attribut-Stack (siehe glPushAttrib). Für die Selektion existiert der Name-Stack, welcher OpenGL-Namen speichert.
Die maximale Höhe/Tiefe (Menge an Informationen) ist implementationsabhängig und kann mit glGet abgefragt werden. (Als Parameter dienen die GL_MAX_STACKNAME_STACK_DEPTH Konstanten.)