glLoadMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beispiel-Quelltext: Record bisl stylischer Formatiert)
K (Typo, Kommas, Satzbau)
Zeile 3: Zeile 3:
 
<br>
 
<br>
 
== Name ==
 
== Name ==
'''glLoadMatrix''' - ersetzt die aktuelle Matrix durch eine Beliebige Matrix.
+
'''glLoadMatrix''' - ersetzt die aktuelle Matrix durch eine beliebige Matrix.
  
 
<br>
 
<br>
Zeile 16: Zeile 16:
 
<tr>
 
<tr>
 
  <td>''m''</td>
 
  <td>''m''</td>
  <td>Zeiger auf eine 4x4 Matrix welche die aktuelle Matrix ersetzen soll.</td>
+
  <td>Ein Zeiger auf eine 4x4-Matrix, welche die aktuelle Matrix ersetzen soll.</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
Zeile 22: Zeile 22:
 
<br>
 
<br>
 
== Beschreibung ==  
 
== Beschreibung ==  
'''glLoadMatrix''' ersetzt die aktuelle Matrix durch die, über ''m'' definierte.<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.<br>
Die aktuelle Matrix ist entweder die Projektionsmatrix, die Modelviewmatrix oder die Texturematrix (je nach aktuellem Matrixmodus ([[glMatrixMode]]) ). <br>
+
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 enthält (single oder double). <br>
 
  
Die Matrix wird somit in folgender Reihenfolge gespeichert:<br>
+
Die Matrix muß also in der folgenden Reihenfolge gespeichert sein:<br>
  
 
  +-          -+
 
  +-          -+
Zeile 36: Zeile 35:
  
 
===Beispiel-Quelltext===
 
===Beispiel-Quelltext===
 +
Als Ersatz für [[glPushMatrix]] / [[glPopMatrix]]:
 
{| border="0"
 
{| border="0"
|+Als Ersatzt für [[glPushMatrix]] / [[glPopMatrix]]:
 
 
|
 
|
 
  <b>type</b>
 
  <b>type</b>
Zeile 52: Zeile 51:
 
   glLoadIdentity;  <br />
 
   glLoadIdentity;  <br />
 
   glTranslatef(-0.8,-0.5,0); <font color="#000080"><i>//Vorgebene Startposition</i></font>
 
   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<br />
+
   glGetFloatv(GL_MODELVIEW_MATRIX,@TempMatrix);<font color="#000080"><i> //Matrix wird gespeichert<br />
 
   {Rotes Dreieck}</i></font>
 
   {Rotes Dreieck}</i></font>
 
   glColor3f(1,0,0);
 
   glColor3f(1,0,0);
Zeile 61: Zeile 60:
 
     glvertex3f(0,0  ,-2);
 
     glvertex3f(0,0  ,-2);
 
   glend;
 
   glend;
   glLoadMatrixf(@TempMatrix);<font color="#000080"><i>//Gespeicherte Matrix wird wieder geladen<br />
+
   glLoadMatrixf(@TempMatrix);<font color="#000080"><i> //Gespeicherte Matrix wird wieder geladen<br />
 
   {Grünes Dreieck}</i></font>
 
   {Grünes Dreieck}</i></font>
 
   glColor3f(0,1,0);
 
   glColor3f(0,1,0);
Zeile 75: Zeile 74:
  
 
== 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>
 
<br>
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==

Version vom 27. Oktober 2005, 22:15 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.
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