glLoadMatrix
Inhaltsverzeichnis
glLoadMatrix
Name
glLoadMatrix - ersetzt die aktuelle Matrix durch eine beliebige Matrix.
Delphi-Spezifikation
procedure glLoadMatrixd(const m: PGLdouble); procedure glLoadMatrixf(const m: PGLfloat);
Parameter
m | Ein Zeiger auf eine 4x4-Matrix, welche die aktuelle Matrix ersetzen soll. |
---|
Beschreibung
glLoadMatrix ersetzt die aktuelle Matrix durch die 4x4-Matrix, auf die m zeigt. Abhängig vom aktuellen Matrix-Modus (glMatrixMode) wird dadurch die Projektions-Matrix, die Modelview-Matrix oder die Texture-Matrix ersetzt (siehe dazu "Die drei OpenGL-Matrizen").
Der Parameter m zeigt auf eine 4x4-Matrix, welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit (Single oder Double) enthält.
Die Matrix muß also in der folgenden Reihenfolge gespeichert sein:
+- -+ | 0 4 8 12 | | 1 5 9 13 | | 2 6 10 14 | | 3 7 11 15 | +- -+
Beispiel-Quelltext
Als Ersatz für glPushMatrix / glPopMatrix:
type
TVektor = record
X,Y,Z,W : glFloat
end;
TMatrix = array[(mat_XAchse,mat_YAchse,mat_ZAchse,mat_Position)] of TVektor;
var
TempMatrix:TMatrix;
begin
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glTranslatef(-0.8,-0.5,0); //Vorgebene Startposition
glGetFloatv(GL_MODELVIEW_MATRIX,@TempMatrix); //Matrix wird gespeichert
{Rotes Dreieck}
glColor3f(1,0,0);
glTranslatef(1,0,0);
glBegin(GL_TRIANGLES);
glVertex3f(1,0 ,-2);
glVertex3f(0,1 ,-2);
glVertex3f(0,0 ,-2);
glEnd;
glLoadMatrixf(@TempMatrix); //Gespeicherte Matrix wird wieder geladen
{Grünes Dreieck}
glColor3f(0,1,0);
glBegin(GL_TRIANGLES);
glVertex3f(1,0 ,-2);
glVertex3f(0,1 ,-2);
glVertex3f(0,0 ,-2);
glEnd;
end;
Fehlermeldungen
GL_INVALID_OPERATION wird generiert, wenn glLoadMatrix innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.
Zugehörige Wertrückgaben
glGet mit Token GL_MATRIX_MODE
glGet mit Token GL_MODELVIEW_MATRIX
glGet mit Token GL_PROJECTION_MATRIX
glGet mit Token GL_TEXTURE_MATRIX