glLoadMatrix: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) (Bitte Beispiel nachtragen) |
Flo (Diskussion | Beiträge) (Beispiel-Quelltext) |
||
| Zeile 29: | Zeile 29: | ||
Der Parameter ''m'' zeigt auf eine 4x4 Matrix welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit enthält (single oder double). <br> | Der Parameter ''m'' zeigt auf eine 4x4 Matrix welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit enthält (single oder double). <br> | ||
Eine solche Matrix würde so gespeichert werden: | Eine solche Matrix würde so gespeichert werden: | ||
| − | === Beispiel für | + | ===Beispiel-Quelltext=== |
| + | {| border="1" | ||
| + | |+Als Ersatzt für [[glPushMatrix]] / [[glPopMatrix]]: | ||
| + | | | ||
| + | <b>type</b> | ||
| + | TVektor = <b>record</b> X,Y,Z,W:glFloat <b>end</b>; | ||
| + | TMatrix = <b>array</b>[(mat_XAchse,mat_YAchse,mat_ZAchse,mat_Position)] <b>of</b> TVertex; | ||
| − | + | <b>var</b> | |
| + | TempMatrix:TMatrix; | ||
| + | <b>begin</b> | ||
| + | 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); <font color="#000080"><i>//Vorgebene Startposition</i></font> | ||
| + | glGetFloatv(GL_MODELVIEW_MATRIX,@TempMatrix);<font color="#000080"><i>//Matrix wird gespeichert | ||
| + | |||
| + | {Rotes Dreieck}</i></font> | ||
| + | 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);<font color="#000080"><i>//Gespeicherte Matrix wird wieder geladen | ||
| + | |||
| + | {Gründes Dreieck}</i></font> | ||
| + | glColor3f(0,1,0); | ||
| + | glbegin(GL_TRIANGLES); | ||
| + | glvertex3f(1,0 ,-2); | ||
| + | glvertex3f(0,1 ,-2); | ||
| + | glvertex3f(0,0 ,-2); | ||
| + | glend; | ||
| + | <b>end;</b> | ||
| + | |} | ||
<br> | <br> | ||
Version vom 24. Juli 2004, 16:53 Uhr
Inhaltsverzeichnis
glLoadMatrix
glLoadMatrix
glLoadMatrix - ersetzt die aktuelle Matrix durch eine Beliebige Matrix.
Delphi-Spezifikation
procedure glLoadMatrixd(const m: PGLdouble);
procedure glLoadMatrixf(const m: PGLfloat);
Parameter
| m | Zeiger auf eine 4x4 Matrix welche die aktuelle Matrix ersetzen soll. |
Beschreibung
glLoadMatrix ersetzt die aktuelle Matrix durch die, über m definierte.
Die aktuelle Matrix ist entweder die Projektionsmatrix, die Modelviewmatrix oder die Texturematrix (je nach aktuellem Matrixmodus (glMatrixMode) ).
Der Parameter m zeigt auf eine 4x4 Matrix welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit enthält (single oder double).
Eine solche Matrix würde so gespeichert werden:
Beispiel-Quelltext
type TVektor = record X,Y,Z,W:glFloat end; TMatrix = array[(mat_XAchse,mat_YAchse,mat_ZAchse,mat_Position)] of TVertex; 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ündes 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