glLoadMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.)
K (Kategorisierung)
Zeile 10: Zeile 10:
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  '''procedure''' glLoadMatrixd('''const''' ''m'': PGLdouble); <br>
+
  '''procedure''' glLoadMatrixd('''const''' ''m'': PGLdouble);
 
  '''procedure''' glLoadMatrixf('''const''' ''m'': PGLfloat);
 
  '''procedure''' glLoadMatrixf('''const''' ''m'': PGLfloat);
  
Zeile 16: Zeile 16:
  
 
== Parameter ==
 
== Parameter ==
<table border=1 rules=all>
+
{| border="1" rules="all"
<tr>
+
! ''m''
<td>''m''</td>
+
| Ein Zeiger auf eine 4x4-Matrix, welche die aktuelle Matrix ersetzen soll.
<td>Ein Zeiger auf eine 4x4-Matrix, welche die aktuelle Matrix ersetzen soll.</td>
+
|}
</tr>
 
</table>
 
  
  
  
 
== Beschreibung ==  
 
== 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 [[Matrix#Die_drei_OpenGL_Matrizen|"Die_drei_OpenGL_Matrizen"]]).<br>
+
'''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 [[Matrix#Die_drei_OpenGL_Matrizen|"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.<br>
+
 
 +
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:
  
Die Matrix muß also in der folgenden Reihenfolge gespeichert sein:<br>
 
  
 
  +-          -+
 
  +-          -+
Zeile 37: Zeile 37:
 
  | 3  7  11 15 |
 
  | 3  7  11 15 |
 
  +-          -+
 
  +-          -+
 +
 +
  
 
===Beispiel-Quelltext===
 
===Beispiel-Quelltext===
Zeile 75: Zeile 77:
 
  glEnd;
 
  glEnd;
 
end;</source>
 
end;</source>
 +
 +
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
GL_INVALID_OPERATION wird generiert, wenn ''glLoadMatrix'' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
+
'''GL_INVALID_OPERATION''' wird generiert, wenn ''glLoadMatrix'' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.
<br>
+
 
 +
 
 +
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
[[glGet]] mit Token GL_MATRIX_MODE<br>
+
[[glGet]] mit Token [[glGet#GL_MATRIX_MODE|GL_MATRIX_MODE]]
[[glGet]] mit Token GL_MODELVIEW_MATRIX<br>
+
 
[[glGet]] mit Token GL_PROJECTION_MATRIX<br>
+
[[glGet]] mit Token [[glGet#GL_MODELVIEW_MATRIX|GL_MODELVIEW_MATRIX]]
[[glGet]] mit Token GL_TEXTURE_MATRIX<br>
+
 
 +
[[glGet]] mit Token [[glGet#GL_PROJECTION_MATRIX|GL_PROJECTION_MATRIX]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_TEXTURE_MATRIX|GL_TEXTURE_MATRIX]]
  
  
Zeile 91: Zeile 100:
  
 
[[Kategorie:GL|LoadMatrix]]
 
[[Kategorie:GL|LoadMatrix]]
[[Kategorie:GL1.0]]
+
[[Kategorie:GL1.0|LoadMatrix]]

Version vom 25. Juli 2011, 11:42 Uhr

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


Siehe auch

glLoadIdentity, glMatrixMode, glMultMatrix, glPushMatrix