glMultMatrix: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) K (→Siehe auch) |
(→Beispiel) |
||
(6 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glMultMatrix = | = glMultMatrix = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
− | '''glMultMatrix''' - multipliziert die aktuelle Matrix mit einer beliebigen Matrix. | + | '''glMultMatrix''' - multipliziert die [[glMatrixMode|aktuelle Matrix]] mit einer beliebigen [[Matrix]]. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
'''procedure''' glMultMatrixd(const ''m'': PGLdouble); | '''procedure''' glMultMatrixd(const ''m'': PGLdouble); | ||
'''procedure''' glMultMatrixf(const ''m'': PGLfloat); | '''procedure''' glMultMatrixf(const ''m'': PGLfloat); | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
− | + | {| border="1" rules="all" | |
− | + | ! ''m'' | |
− | + | | Ist ein Zeiger auf eine 4x4-[[Matrix]], deren Werte spaltenweise als 16 Einzelwerte abgelegt sind. | |
− | + | |} | |
− | + | ||
− | + | ||
− | |||
== Beschreibung == | == Beschreibung == | ||
− | '''glMultMatrix''' multipliziert die aktuelle Matrix mit der Matrix, auf die ''m'' zeigt. | + | '''glMultMatrix''' multipliziert die [[glMatrixMode|aktuelle Matrix]] mit der [[Matrix]], auf die ''m'' zeigt. |
− | |||
− | + | Wenn '''M''' die [[glMatrixMode|aktuelle Matrix]] ist und '''T''' die, auf die ''m'' zeigt, dann bewirkt '''glMultMatrix''': '''M := M*T''' | |
− | Der Parameter ''m'' zeigt auf eine 4x4 Matrix die Fließkommazahlen von einfacher bzw. doppelter Genauigkeit enthält. Diese werden spaltenweise als 16 Einzelwerte abgelegt. | + | Die [[glMatrixMode|aktuelle Matrix]] ist entweder die Projektionsmatrix, die Modelviewmatrix oder die Texturmatrix. Dies hängt vom aktuellem Matrixmodus ab. |
− | Die Werte werden somit in folgender Reihenfolge gespeichert: | + | |
+ | Der Parameter ''m'' zeigt auf eine 4x4-[[Matrix]], die Fließkommazahlen von einfacher bzw. doppelter Genauigkeit enthält. Diese werden spaltenweise als 16 Einzelwerte abgelegt. Die Werte werden somit in folgender Reihenfolge gespeichert: | ||
+- -+ | +- -+ | ||
Zeile 36: | Zeile 38: | ||
+- -+ | +- -+ | ||
+ | == Beispiel == | ||
+ | Das Modell wird um die Hälfte verkleinert. | ||
+ | |||
+ | <syntaxhighlight lang="pascal"> | ||
+ | type | ||
+ | TMatrix = array[0..3, 0..3] of glFloat; | ||
+ | const | ||
+ | ScaleMatrix: TMatrix = ((0.5, 0.0, 0.0, 0.0), (0.0, 0.5, 0.0, 0.0), (0.0, 0.0, 0.5, 0.0), (0.0, 0.0, 0.0, 1.0)); | ||
+ | |||
+ | begin | ||
+ | ... | ||
+ | glMatrixMode(GL_MODELVIEW); | ||
+ | glLoadIdentity(); | ||
+ | glMultMatrixf(@ScaleMatrix); // Aktuelle Matrix mit ScaleMatrix multiplizieren. | ||
+ | |||
+ | glBegin(GL_TRIANGLES); | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | GL_INVALID_OPERATION wird generiert wenn '''glMultMatrix''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. | + | '''GL_INVALID_OPERATION''' wird generiert, wenn '''glMultMatrix''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird. |
+ | |||
+ | |||
− | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
− | [[glGet]] mit Token GL_MATRIX_MODE | + | [[glGet]] mit Token [[glGet#GL_MATRIX_MODE|GL_MATRIX_MODE]] |
− | [[glGet]] mit Token GL_MODELVIEW_MATRIX | + | |
− | [[glGet]] mit Token GL_PROJECTION_MATRIX | + | [[glGet]] mit Token [[glGet#GL_MODELVIEW_MATRIX|GL_MODELVIEW_MATRIX]] |
− | [[glGet]] mit Token GL_TEXTURE_MATRIX | + | |
+ | [[glGet]] mit Token [[glGet#GL_PROJECTION_MATRIX|GL_PROJECTION_MATRIX]] | ||
+ | |||
+ | [[glGet]] mit Token [[glGet#GL_TEXTURE_MATRIX|GL_TEXTURE_MATRIX]] | ||
+ | |||
+ | |||
− | |||
== Siehe auch == | == Siehe auch == | ||
[[glMatrixMode]], [[glLoadIdentity]], [[glLoadMatrix]], [[glPushMatrix]] | [[glMatrixMode]], [[glLoadIdentity]], [[glLoadMatrix]], [[glPushMatrix]] | ||
[[Kategorie:GL|MultMatrix]] | [[Kategorie:GL|MultMatrix]] | ||
+ | [[Kategorie:GL1.0|MultMatrix]] |
Aktuelle Version vom 22. Juni 2018, 17:27 Uhr
Inhaltsverzeichnis
glMultMatrix
Name
glMultMatrix - multipliziert die aktuelle Matrix mit einer beliebigen Matrix.
Delphi-Spezifikation
procedure glMultMatrixd(const m: PGLdouble); procedure glMultMatrixf(const m: PGLfloat);
Parameter
m | Ist ein Zeiger auf eine 4x4-Matrix, deren Werte spaltenweise als 16 Einzelwerte abgelegt sind. |
---|
Beschreibung
glMultMatrix multipliziert die aktuelle Matrix mit der Matrix, auf die m zeigt.
Wenn M die aktuelle Matrix ist und T die, auf die m zeigt, dann bewirkt glMultMatrix: M := M*T
Die aktuelle Matrix ist entweder die Projektionsmatrix, die Modelviewmatrix oder die Texturmatrix. Dies hängt vom aktuellem Matrixmodus ab.
Der Parameter m zeigt auf eine 4x4-Matrix, die Fließkommazahlen von einfacher bzw. doppelter Genauigkeit enthält. Diese werden spaltenweise als 16 Einzelwerte abgelegt. Die Werte werden somit in folgender Reihenfolge gespeichert:
+- -+ | 0 4 8 12 | | 1 5 9 13 | | 2 6 10 14 | | 3 7 11 15 | +- -+
Beispiel
Das Modell wird um die Hälfte verkleinert.
type
TMatrix = array[0..3, 0..3] of glFloat;
const
ScaleMatrix: TMatrix = ((0.5, 0.0, 0.0, 0.0), (0.0, 0.5, 0.0, 0.0), (0.0, 0.0, 0.5, 0.0), (0.0, 0.0, 0.0, 1.0));
begin
...
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMultMatrixf(@ScaleMatrix); // Aktuelle Matrix mit ScaleMatrix multiplizieren.
glBegin(GL_TRIANGLES);
...
Fehlermeldungen
GL_INVALID_OPERATION wird generiert, wenn glMultMatrix 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