glOrtho: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Kategorisierung)
 
(26 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
  
 
== Name ==  
 
== Name ==  
----
 
 
'''glOrtho''' - aktiviert einen orthogonalen 2D-Rendermodus <br>  
 
'''glOrtho''' - aktiviert einen orthogonalen 2D-Rendermodus <br>  
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
----
+
  procedure '''glOrtho'''(''left'', ''right'', ''bottom'', ''top'', ''znear'', ''zfar'' : double); <br>  
  '''procedure''' glOrtho(''left'', ''right'', ''bottom'', ''top'', ''znear'', ''zfar'' : double); <br>  
+
 
 +
 
  
<br>
 
 
== Parameter ==
 
== Parameter ==
----
+
{| border=1 rules=all
<table border=1 rules=all>
+
! '''left, right, bottom, top'''
<tr>
+
| Definieren die 4 [[Clipping Plane]]s.
<td> ''left, right, bottom, top''
+
|-
<td> Diese Parameter geben an, welche virtuellen "Koordinaten" einer Seite des Blickfeldes zugeordnet werden.  
+
! '''znear, zfar'''
<tr>
+
| Setzen die Nah- und Fern- Clippingplane. Wenn die Fläche hinter dem User sein soll, müssen die Angaben negativ sein.
<td> ''znear, zfar''
+
|}
<td> Geben die minimale bzw. Maximale Distanz der Objekte an, die noch gezeichnet werden sollen. Damit setzen diese Parameter praktisch die Clipping-Planes.
+
 
  
</table> <br>
 
<br>
 
 
== Beschreibung ==  
 
== Beschreibung ==  
----  
+
'''glOrtho''' erstellt eine Matrix für Parallel-Projektion. Die aktuelle Matrix wird dabei mit der neu erstellten Matrix multipliziert. Das bedeutet, wenn '''M''' die aktuelle und '''O''' die orthogonale Matrix ist, ergibt sich die neue Matrix aus: '''M := M*O'''
'''glOrtho''' schaltet OpenGL praktisch in einen 2D-Modus, wo die Z-Koordiante keine Rolle mehr im Bezug auf die letztendliche Größe eines Objektes hat (weit entfernte Objekte (mit hoher Z-Koordinate) werden genau so groß gezeichnet, wie Nahe.) <br>
+
 
Damit dient die Z-koordiante nur noch zur "Anordnung"" von Vorder- und Hintergründen auf der 2D-Zeichenfläche. <br>
+
Benutzen Sie [[glPushMatrix]] und [[glPopMatrix]], um den aktuellen [[Matrixstack]] zu speichern und zu laden.
 +
 
 +
Die beiden Punkte (''left, bottom, -near'') und (''right, top, -near'') befinden sich auf der Nah-[[Clipping Plane]] und werden auf die linke-untere und rechte-obere Ecke des Fensters gemappt/abgebildet. Dabei wird die Position des Auges an Position (0,0,0) angenommen. ''-far'' bestimmt die Position der Fernen-[[Clipping Plane]]. Beide Ebenen, die nahe und die ferne Schnittebene (Clipping Plane), können negative Werte annehmen.
 +
 
 +
<div align="center"> Die erstellte Matrix hat die Form: [[Bild:GlOrtho_Matrix.png]]</div>
 +
 
 +
mit ''f'' = ''zFar'', ''n'' = ''zNear''<br>
 +
''l'' = ''left'','' r'' = ''right''<br>
 +
''t'' = ''top'', ''b'' = ''bottom''<br>
 +
 
 +
'''glOrtho''' schaltet OpenGL praktisch in einen 2D-Modus, wo die Z-Koordiante keine Rolle mehr im Bezug auf die letztendliche Größe eines Objektes hat (weit entfernte Objekte (mit hoher Z-Koordinate) werden genau so groß gezeichnet, wie nahe.) <br>
 +
Damit dient die Z-Koordiante nur noch zur "Anordnung"" von Vorder- und Hintergründen auf der 2D-Zeichenfläche.
 +
 
 +
Aus diesem Grunde wird diese Form für alle 2D-Anwendungsfälle benutzt. Z.B. 2D-Spiele (Side-Scroller, Jump&Run), [[HUD]]s, Menüs, usw. .
 +
 
 +
{|width="100%" {{Prettytable}}
 +
!Othogonal
 +
!Perspektivisch
 +
|-
 +
|[[Bild:Orthomode_Quads.jpg|thumb|center|300px|Quads an verschiedenen Stellen auf der X-Achse im Orthomodus]]
 +
|[[Bild:GluPerspective_Quads_X.jpg|thumb|center|300px|''Zum Vergleich:'' Quads an verschiedenen Stellen der X-Achse im perspektivischen Modus]]
 +
|-
 +
|[[Bild:Orthomode_Quads.jpg|thumb|center|300px|die gleichen Quads mit veränderten Positionen auf der Z-Achse im orthogonalen Modus]]
 +
|[[Bild:GluPerspective_Quads_Z.jpg|thumb|center|300px|''Zum Verlgeich:'' Die gleiche Reihe wie ''oben'', nur mit veränderten Positionen auf der Z-Achse, wieder im perspektivischen Modus]]
 +
|}
 +
 
 +
{{Hinweis|Wie üblich werden Objekte, die eine kleinere Z-Koordinate als ''znear'' bzw. eine größere als ''zfar'' haben, nicht gezeichnet.}}
 +
 
 +
 
 +
 
 +
== Fehlermeldungen ==
 +
* '''GL_INVALID_VALUE''' wird generiert, wenn ''zNear'' gleich ''zFar'', ''left'' gleich ''right'' oder ''top'' gleich bottom'' ist.
  
Die Parameter ''left'', ''right'', ''bottom'' und ''top'' geben dabei an, welcher Koordinate eine Bestimmte Seite der Zeichenfläche zugeordnet wird. Hat ''left'' z.b. den Wert 0, so liegen alle Punkte deren X-Koordinate "0" ist am Linken Bildschirmrand. <br>
+
* '''GL_INVALID_OPERATION''' wird generiert, wenn '''glOrtho''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.
  
Objekte die einen kleineren Z-Koordinate als ''znear'' bzw. einen größeren als ''zfar'' haben, werden nicht gezeichent.
 
<br>
 
  
<br>
+
 
 +
== Zugehörige Werterückgaben ==
 +
[[glGet]] mit Token [[glGet#GL_COLOR_MATRIX|GL_COLOR_MATRIX]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_MATRIX_MODE|GL_MATRIX_MODE]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_MODELVIEW_MATRIX|GL_MODELVIEW_MATRIX]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_PROJECTION_MATRIX|GL_PROJECTION_MATRIX]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_TEXTURE_MATRIX|GL_TEXTURE_MATRIX]]
 +
 
 +
 
 +
 
 +
== Links ==
 +
http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml
 +
 
 
== Siehe auch ==  
 
== Siehe auch ==  
----
+
[[glFrustum]], [[glMatrixMode]], [[glMultMatrix]], [[glPushMatrix]], [[glViewport]], [[gluPerspective]]
[[glViewport]], [[gluPerspective]]
+
 
 +
[[Kategorie:GL|Ortho]]
 +
[[Kategorie:GL1.0|Ortho]]

Aktuelle Version vom 18. Juni 2011, 15:36 Uhr

glOrtho

Name

glOrtho - aktiviert einen orthogonalen 2D-Rendermodus


Delphi-Spezifikation

procedure glOrtho(left, right, bottom, top, znear, zfar : double); 


Parameter

left, right, bottom, top Definieren die 4 Clipping Planes.
znear, zfar Setzen die Nah- und Fern- Clippingplane. Wenn die Fläche hinter dem User sein soll, müssen die Angaben negativ sein.


Beschreibung

glOrtho erstellt eine Matrix für Parallel-Projektion. Die aktuelle Matrix wird dabei mit der neu erstellten Matrix multipliziert. Das bedeutet, wenn M die aktuelle und O die orthogonale Matrix ist, ergibt sich die neue Matrix aus: M := M*O

Benutzen Sie glPushMatrix und glPopMatrix, um den aktuellen Matrixstack zu speichern und zu laden.

Die beiden Punkte (left, bottom, -near) und (right, top, -near) befinden sich auf der Nah-Clipping Plane und werden auf die linke-untere und rechte-obere Ecke des Fensters gemappt/abgebildet. Dabei wird die Position des Auges an Position (0,0,0) angenommen. -far bestimmt die Position der Fernen-Clipping Plane. Beide Ebenen, die nahe und die ferne Schnittebene (Clipping Plane), können negative Werte annehmen.

Die erstellte Matrix hat die Form: GlOrtho Matrix.png

mit f = zFar, n = zNear
l = left, r = right
t = top, b = bottom

glOrtho schaltet OpenGL praktisch in einen 2D-Modus, wo die Z-Koordiante keine Rolle mehr im Bezug auf die letztendliche Größe eines Objektes hat (weit entfernte Objekte (mit hoher Z-Koordinate) werden genau so groß gezeichnet, wie nahe.)
Damit dient die Z-Koordiante nur noch zur "Anordnung"" von Vorder- und Hintergründen auf der 2D-Zeichenfläche.

Aus diesem Grunde wird diese Form für alle 2D-Anwendungsfälle benutzt. Z.B. 2D-Spiele (Side-Scroller, Jump&Run), HUDs, Menüs, usw. .

Othogonal Perspektivisch
Quads an verschiedenen Stellen auf der X-Achse im Orthomodus
Zum Vergleich: Quads an verschiedenen Stellen der X-Achse im perspektivischen Modus
die gleichen Quads mit veränderten Positionen auf der Z-Achse im orthogonalen Modus
Zum Verlgeich: Die gleiche Reihe wie oben, nur mit veränderten Positionen auf der Z-Achse, wieder im perspektivischen Modus
Info DGL.png Wie üblich werden Objekte, die eine kleinere Z-Koordinate als znear bzw. eine größere als zfar haben, nicht gezeichnet.


Fehlermeldungen

  • GL_INVALID_VALUE wird generiert, wenn zNear gleich zFar, left gleich right oder top gleich bottom ist.
  • GL_INVALID_OPERATION wird generiert, wenn glOrtho innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.


Zugehörige Werterückgaben

glGet mit Token GL_COLOR_MATRIX

glGet mit Token GL_MATRIX_MODE

glGet mit Token GL_MODELVIEW_MATRIX

glGet mit Token GL_PROJECTION_MATRIX

glGet mit Token GL_TEXTURE_MATRIX


Links

http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml

Siehe auch

glFrustum, glMatrixMode, glMultMatrix, glPushMatrix, glViewport, gluPerspective