glLoadMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Siehe auch)
K (Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.)
Zeile 40: Zeile 40:
 
===Beispiel-Quelltext===
 
===Beispiel-Quelltext===
 
Als Ersatz für [[glPushMatrix]] / [[glPopMatrix]]:
 
Als Ersatz für [[glPushMatrix]] / [[glPopMatrix]]:
<pascal>type
+
<source lang="pascal">type
 
   TVektor = record  
 
   TVektor = record  
 
             X,Y,Z,W : glFloat  
 
             X,Y,Z,W : glFloat  
Zeile 74: Zeile 74:
 
   glVertex3f(0,0  ,-2);
 
   glVertex3f(0,0  ,-2);
 
  glEnd;
 
  glEnd;
end;</pascal>
+
end;</source>
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==

Version vom 10. März 2009, 19:20 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