glPushMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Update auf OGL 2.1)
 
(14 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glPushMatrix, glPopMatrix =
 
= glPushMatrix, glPopMatrix =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 +
'''glPushMatrix''', '''glPopMatrix ''' - Legen die aktuelle Matrix auf den [[Stack]] bzw. nehmen sie wieder herunter.
 +
 +
  
'''glPushMatrix''', '''glPopMatrix ''' - Legen die aktuelle Matrix auf den Stack bzw. nehmen sie wieder herunter.
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 +
procedure '''glPushMatrix''';
 +
procedure '''glPopMatrix''';
 +
  
procedure '''glPushMatrix''';
 
procedure '''glPopMatrix''';
 
  
<br>
 
 
== Beschreibung ==  
 
== Beschreibung ==  
 +
Für jeden Matrizenmodus gibt es einen eigenen Stapel, wobei dieser für '''GL_MODELVIEW''' mindestens 32 Einträge aufnehmen können muss, für '''GL_COLOR, GL_PROJECTION''' und '''GL_TEXTURE''' mindestens 2.
 +
(Die aktuelle Matrix im jeweiligen Modus ist die Matrix die auf dem passenden Stapel liegt.)
 +
 +
'''glPushMatrix''' legt die aktuelle Matrix auf den Stapel, '''glPopMatrix''' nimmt die oberste Matrix wieder vom Stapel und ersetzt die aktuelle Matrix dann mit dieser. Beim Start der GL enthält jeder Stack eine Matrix, die Identitätsmatrix.
 +
 +
Fehler werden generiert, wenn eine Matrix auf einen vollen Stapel gelegt wird, oder eine Matrix vom Stack herunter genommen werden soll obwohl dieser leer ist. In beiden Fällen wird das Fehlerflag gesetzt.
  
Für jeden Matrizenmodus gibt es einen eigenen Stapel, wobei dieser für GL_MODELVIEW mindestens 32 Einträge aufnehmen können muss, für GL_PROJECTION und GL_TEXTURE mindestens 2. Dir aktuelle Matrix im jeweiligen Modus ist die Matrix die auf dem passenden Stapel liegt.
 
  
'''glPushMatrix''' legt die aktuelle Matrix auf den Stapel, '''glPopMatrix''' nimmt die oberste Matrix wieder vom Stapel und ersetzt die aktuelle Matrix dann mit dieser. Beim Start der GL enthält jeder Stack eine Matrix, die Identitätsmatrix.
 
  
Fehler werden generiert, wenn eine Matrix auf einen vollen Stapel legen will, oder eine Matrix vom Stack herunternehmen woll die leer ist. In beiden Fällen wird das Fehlerflag gesetzt.
 
  
<br>
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
 
 
'''GL_STACK_OVERFLOW''' wird generiert wenn '''glPushMatrix''' aufgerufen wird und der aktuelle Matrizenstapel voll ist.
 
'''GL_STACK_OVERFLOW''' wird generiert wenn '''glPushMatrix''' aufgerufen wird und der aktuelle Matrizenstapel voll ist.
  
Zeile 30: Zeile 33:
 
'''GL_INVALID_OPERATION''' wird generiert wenn '''glPushMatrix''' oder '''glPopMatrix''' zwischen einem [[glBegin]] und dem passenden [[glEnd]] aufgerufen werden.
 
'''GL_INVALID_OPERATION''' wird generiert wenn '''glPushMatrix''' oder '''glPopMatrix''' zwischen einem [[glBegin]] und dem passenden [[glEnd]] aufgerufen werden.
  
<br>
+
 
 +
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
 
 
[[glGet]] mit dem Token '''GL_MATRIX_MODE'''<br>
 
[[glGet]] mit dem Token '''GL_MATRIX_MODE'''<br>
 +
[[glGet]] mit dem Token '''GL_COLOR_MATRIX'''<br>
 
[[glGet]] mit dem Token '''GL_MODELVIEW_MATRIX'''<br>
 
[[glGet]] mit dem Token '''GL_MODELVIEW_MATRIX'''<br>
 
[[glGet]] mit dem Token '''GL_PROJECTION_MATRIX'''<br>
 
[[glGet]] mit dem Token '''GL_PROJECTION_MATRIX'''<br>
Zeile 44: Zeile 48:
 
[[glGet]] mit dem Token '''GL_MAX_TEXTURE_STACK_DEPTH'''<br>
 
[[glGet]] mit dem Token '''GL_MAX_TEXTURE_STACK_DEPTH'''<br>
  
<br>
+
== Links ==
 +
http://www.opengl.org/sdk/docs/man/xhtml/glPushMatrix.xml<br>
 +
 
 
== Siehe auch ==
 
== Siehe auch ==
 +
Hintergrund: [[Stack]]
 +
 +
[[glFrustum]], [[glLoadIdentity]], [[glLoadMatrix]], [[glLoadTransposeMatrix]], [[glMatrixMode]], [[glMultMatrix]], [[glMultTransposeMatrix]], [[glOrtho]], [[glRotate]], [[glScale]], [[glTranslate]], [[glViewport]]
  
[[glFrustum]], [[glLoadIdentity]], [[glLoadMatrix]], [[glMatrixMode]], [[glMultMatrix]], [[glOrtho]], [[glRotate]], [[glScale]], [[glTranslate]], [[glViewport]]
+
[[Kategorie:GL|PushMatrix]]
 +
[[Kategorie:GL1.0]]

Aktuelle Version vom 30. April 2009, 12:10 Uhr

glPushMatrix, glPopMatrix

Name

glPushMatrix, glPopMatrix - Legen die aktuelle Matrix auf den Stack bzw. nehmen sie wieder herunter.



Delphi-Spezifikation

procedure glPushMatrix;
procedure glPopMatrix;


Beschreibung

Für jeden Matrizenmodus gibt es einen eigenen Stapel, wobei dieser für GL_MODELVIEW mindestens 32 Einträge aufnehmen können muss, für GL_COLOR, GL_PROJECTION und GL_TEXTURE mindestens 2. (Die aktuelle Matrix im jeweiligen Modus ist die Matrix die auf dem passenden Stapel liegt.)

glPushMatrix legt die aktuelle Matrix auf den Stapel, glPopMatrix nimmt die oberste Matrix wieder vom Stapel und ersetzt die aktuelle Matrix dann mit dieser. Beim Start der GL enthält jeder Stack eine Matrix, die Identitätsmatrix.

Fehler werden generiert, wenn eine Matrix auf einen vollen Stapel gelegt wird, oder eine Matrix vom Stack herunter genommen werden soll obwohl dieser leer ist. In beiden Fällen wird das Fehlerflag gesetzt.



Fehlermeldungen

GL_STACK_OVERFLOW wird generiert wenn glPushMatrix aufgerufen wird und der aktuelle Matrizenstapel voll ist.

GL_STACK_UNDERFLOW wird generiert wenn glPopMatrix aufgerufen wird und sich auf dem aktuellen Matrizenstapel nur die Identitätsmatrix befindet. (Also der Stapel quasi leer ist)

GL_INVALID_OPERATION wird generiert wenn glPushMatrix oder glPopMatrix zwischen einem glBegin und dem passenden glEnd aufgerufen werden.


Zugehörige Wertrückgaben

glGet mit dem Token GL_MATRIX_MODE
glGet mit dem Token GL_COLOR_MATRIX
glGet mit dem Token GL_MODELVIEW_MATRIX
glGet mit dem Token GL_PROJECTION_MATRIX
glGet mit dem Token GL_TEXTURE_MATRIX
glGet mit dem Token GL_MODELVIEW_STACK_DEPTH
glGet mit dem Token GL_PROJECTION_STACK_DEPTH
glGet mit dem Token GL_TEXTURE_STACK_DEPTH
glGet mit dem Token GL_MAX_MODELVIEW_STACK_DEPTH
glGet mit dem Token GL_MAX_PROJECTION_STACK_DEPTH
glGet mit dem Token GL_MAX_TEXTURE_STACK_DEPTH

Links

http://www.opengl.org/sdk/docs/man/xhtml/glPushMatrix.xml

Siehe auch

Hintergrund: Stack

glFrustum, glLoadIdentity, glLoadMatrix, glLoadTransposeMatrix, glMatrixMode, glMultMatrix, glMultTransposeMatrix, glOrtho, glRotate, glScale, glTranslate, glViewport