glMultMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Kategorisierung, Wikisysntax für Tabelle)
(Beispiel)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 38: 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 ==

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