glMultMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Version Hochgeladen)
(Beispiel)
 
(9 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glMultMatrix =
 
= glMultMatrix =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
----
+
'''glMultMatrix''' - multipliziert die [[glMatrixMode|aktuelle Matrix]] mit einer beliebigen [[Matrix]].
'''glMultMatrix''' - multipliziert die aktuelle Matrix mit einer beliebigen Matrix.
+
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
----
 
 
  '''procedure''' glMultMatrixd(const ''m'': PGLdouble);
 
  '''procedure''' glMultMatrixd(const ''m'': PGLdouble);
 
  '''procedure''' glMultMatrixf(const ''m'': PGLfloat);
 
  '''procedure''' glMultMatrixf(const ''m'': PGLfloat);
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
----
+
{| border="1" rules="all"
<table border=1 rules=all>
+
! ''m''
<tr>
+
| Ist ein Zeiger auf eine 4x4-[[Matrix]], deren Werte spaltenweise als 16 Einzelwerte abgelegt sind.
<td>''m''</td>
+
|}
<td>Ist ein Zeiger auf eine 4x4 Matrix deren Werte spaltenweise als 16 Einzelwerte abgelegt sind.</td>
+
 
</tr>
+
 
</table>
 
  
<br>
 
 
== Beschreibung ==  
 
== Beschreibung ==  
----
+
'''glMultMatrix''' multipliziert die [[glMatrixMode|aktuelle Matrix]] mit der [[Matrix]], auf die ''m'' zeigt.
'''glMultMatrix''' multipliziert die aktuelle Matrix mit der Matrix, auf die ''m'' zeigt.<br>
 
Wenn '''M''' die aktuelle Matrix ist und '''T''' die, auf die ''m'' zeigt, dann  bewirkt '''glMultMatrix''': '''M := M*T''' <br>
 
  
Die aktuelle Matrix ist entweder die Projektionsmatrix, die Modelviewmatrix oder die Texturmatrix. Dies hängt vom aktuellem Matrixmodus ab. (siehe [[glMatrixMode]]) <br>
+
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.<br>
+
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:<br>
+
 
 +
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 40: 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.
+
 
 +
 
  
<br>
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
----
+
[[glGet]] mit Token [[glGet#GL_MATRIX_MODE|GL_MATRIX_MODE]]
[[glGet]] mit Token GL_MATRIX_MODE <br>
+
 
[[glGet]] mit Token GL_MODELVIEW_MATRIX <br>
+
[[glGet]] mit Token [[glGet#GL_MODELVIEW_MATRIX|GL_MODELVIEW_MATRIX]]
[[glGet]] mit Token GL_PROJECTION_MATRIX <br>
+
 
[[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]]
 +
 
 +
 
  
<br>
 
 
== Siehe auch ==
 
== Siehe auch ==
----
 
 
[[glMatrixMode]], [[glLoadIdentity]], [[glLoadMatrix]], [[glPushMatrix]]
 
[[glMatrixMode]], [[glLoadIdentity]], [[glLoadMatrix]], [[glPushMatrix]]
 +
 +
[[Kategorie:GL|MultMatrix]]
 +
[[Kategorie:GL1.0|MultMatrix]]

Aktuelle Version vom 22. Juni 2018, 17:27 Uhr

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


Siehe auch

glMatrixMode, glLoadIdentity, glLoadMatrix, glPushMatrix