glLoadMatrix: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beispiel-Quelltext: Quelltext-Bereiche vereint)
(Beispiel-Quelltext)
Zeile 41: Zeile 41:
 
  <b>type</b>
 
  <b>type</b>
 
   TVektor = <b>record</b> X,Y,Z,W:glFloat <b>end</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;<br />
+
   TMatrix = <b>array</b>[(mat_XAchse,mat_YAchse,mat_ZAchse,mat_Position)] <b>of</b> TVektor;<br />
 
  <b>var</b>
 
  <b>var</b>
 
   TempMatrix:TMatrix;
 
   TempMatrix:TMatrix;

Version vom 22. März 2005, 22:10 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 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).

Die Matrix wird somit in folgender Reihenfolge gespeichert:

+-           -+
| 0  4  8  12 |
| 1  5  9  13 |
| 2  6  10 14 |
| 3  7  11 15 |
+-           -+

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 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