glLoadMatrix: Unterschied zwischen den Versionen
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
Flash (Diskussion | Beiträge) K (→Beispiel-Quelltext: Pascaltags benutzt) |
||
Zeile 40: | Zeile 40: | ||
===Beispiel-Quelltext=== | ===Beispiel-Quelltext=== | ||
Als Ersatz für [[glPushMatrix]] / [[glPopMatrix]]: | Als Ersatz für [[glPushMatrix]] / [[glPopMatrix]]: | ||
− | + | <pascal>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;</pascal> | ||
== Fehlermeldungen == | == Fehlermeldungen == |
Version vom 8. Juni 2006, 13:15 Uhr
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