glLoadMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Bitte Beispiel nachtragen)
 
(Beispiel-Quelltext)
Zeile 29: Zeile 29:
 
Der Parameter ''m'' zeigt auf eine 4x4 Matrix welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit enthält (single oder double). <br>
 
Der Parameter ''m'' zeigt auf eine 4x4 Matrix welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit enthält (single oder double). <br>
 
Eine solche Matrix würde so gespeichert werden:
 
Eine solche Matrix würde so gespeichert werden:
=== Beispiel für Matrix ===
+
===Beispiel-Quelltext===
 +
{| border="1"
 +
|+Als Ersatzt für [[glPushMatrix]] / [[glPopMatrix]]:
 +
|
 +
<b>type</b>
 +
  TVektor = <b>record</b> X,Y,Z,W:glFloat <b>end</b>;
 +
  TMatrix = <b>array</b>[(mat_XAchse,mat_YAchse,mat_ZAchse,mat_Position)] <b>of</b> TVertex;
  
HIER EIN BEISPIEL EINFÜGEN
+
<b>var</b>
 +
  TempMatrix:TMatrix;
 +
<b>begin</b>
 +
  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); <font color="#000080"><i>//Vorgebene Startposition</i></font>
 +
  glGetFloatv(GL_MODELVIEW_MATRIX,@TempMatrix);<font color="#000080"><i>//Matrix wird gespeichert
 +
 
 +
  {Rotes Dreieck}</i></font>
 +
  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);<font color="#000080"><i>//Gespeicherte Matrix wird wieder geladen
 +
 
 +
  {Gründes Dreieck}</i></font>
 +
  glColor3f(0,1,0);
 +
  glbegin(GL_TRIANGLES);
 +
    glvertex3f(1,0  ,-2);
 +
    glvertex3f(0,1  ,-2);
 +
    glvertex3f(0,0  ,-2);
 +
  glend;
 +
<b>end;</b>
 +
|}
  
 
<br>
 
<br>

Version vom 24. Juli 2004, 16:53 Uhr

glLoadMatrix


glLoadMatrix


glLoadMatrix - ersetzt die aktuelle Matrix durch eine Beliebige Matrix.


Delphi-Spezifikation


procedure glLoadMatrixd(const m: PGLdouble);
procedure glLoadMatrixf(const m: PGLfloat);


Parameter


m Zeiger auf eine 4x4 Matrix welche die aktuelle Matrix ersetzen soll.


Beschreibung


glLoadMatrix ersetzt die aktuelle Matrix durch die, über m definierte.
Die aktuelle Matrix ist entweder die Projektionsmatrix, die Modelviewmatrix oder die Texturematrix (je nach aktuellem Matrixmodus (glMatrixMode) ).
Der Parameter m zeigt auf eine 4x4 Matrix welche spaltenweise Fließkommazahlen mit einfacher oder doppelter Genauigkeit enthält (single oder double).
Eine solche Matrix würde so gespeichert werden:

Beispiel-Quelltext

Als Ersatzt für glPushMatrix / glPopMatrix:
type
  TVektor = record X,Y,Z,W:glFloat end;
  TMatrix = array[(mat_XAchse,mat_YAchse,mat_ZAchse,mat_Position)] of TVertex;
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ündes 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