glFrontFace: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Siehe auch)
K
 
(14 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glFrontFace =
 
= glFrontFace =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glFrontFace''' - bestimmt welche Seite eines Polygons die Vorder- bzw. Rückseite ist.
+
'''glFrontFace''' - bestimmt, welche Seite eines Polygons die Vorder- bzw. Rückseite ist.
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
procedure glFrontFace(mode: TGLenum); stdcall;
+
procedure '''glFrontFace'''(''mode'': TGLenum);
 +
 
 +
 
 +
 
  
<br>
 
 
== Parameter ==
 
== Parameter ==
<table border=1 rules=all>
+
{| border="1" rules="all"
<tr>
+
! ''mode''  
<td>''mode''</td>
+
| Gibt die Reihenfolge an, in der die Eckpunkte definiert werden müssen um eine Vorderseite zu bilden. <br>
<td>Gibt die Reihenfolge an, in der die Eckpunkte definiert werden müssen um eine Vorderseite zu     bilden. <br>
+
Zur Verfügung stehen zwei Konstanten:  <br>
    Zur Verfügung stehen zwei Konstanten:  <br>
+
'''GL_CW''' - Punkte in Uhrzeigerrichtung (clockwise). <br>
    ''GL_CW'' - Punkte in Uhrzeigerrichtung (clockwise). <br>
+
'''GL_CCW''' - Punkte entgegen der Uhrzeigerrichtung (counterclockwise). <br>
    ''GL_CCW'' - Punkte entgegen der Uhrzeigerrichtung (counterclowise). <br>
+
 
    Standard ist GL_CCW.
+
'''Standard ist GL_CCW.'''
</td>
+
|}
</tr>
+
 
</table>
+
 
 +
 
  
<br>
 
 
== Beschreibung ==  
 
== Beschreibung ==  
Eine Szene besteht vielfach aus geschlossenen Objekten oder andere Flächen, deren Rückseite man standardmäßig nicht sieht. Wenn man diese nicht sichtbaren Flächen vom Zeichnen ausschließt, kann man den Zeichenvorgang enorm beschleunigen. Das Ausschließen erfolgt über das aktivieren des [[Backfaceculling | Backfacecullings]] mittels [[glEnable]] und dem Parameter ''GL_CULL_FACE''. <br>
+
Eine Szene besteht vielfach aus geschlossenen Objekten oder andere Flächen, deren Rückseite man standardmäßig nicht sieht. Wenn man diese nicht sichtbaren Flächen vom Zeichnen ausschließt, kann man den Zeichenvorgang enorm beschleunigen. Das Ausschließen erfolgt über das Aktivieren des [[Backfaceculling|Backfacecullings]] mittels [[glEnable]] und dem Parameter '''GL_CULL_FACE'''. <br>
Mithilfe von [[glCullFace]] kann man bestimmen ob die Vorder- oder die Rückseiten eines Polygones nicht gezeichnet werden sollen. <br>
+
Mithilfe von [[glCullFace]] kann man bestimmen, ob die Vorder- oder die Rückseiten eines Polygones nicht gezeichnet werden sollen.
  
Als Parameter wird ''glFrontFace'' eine Richtung übergeben, die festlegt, ob eine Seite eine Vorderseite ist.  <br>
+
Als Parameter wird '''glFrontFace''' eine Richtung übergeben, die festlegt, ob eine Seite eine Vorderseite ist.  <br>
 
Diese Richtungsangabe ist folgendermaßen zu verstehen: <br>
 
Diese Richtungsangabe ist folgendermaßen zu verstehen: <br>
Wenn ein imaginäres Objekt den Kanten des Polygons, beginnend beim ersten übergeben Eckpunkt, nachfolgt und sich bezüglich dem Inneren des Polygones in genau der Richtung bewegt, die mit glFrontFace festgelegt wurde, dann ist diese Seite die Vorderseite.  <br>
+
Wenn ein imaginäres Objekt den Kanten des Polygons, beginnend beim ersten übergeben Eckpunkt nachfolgt und sich bezüglich dem Inneren des Polygones in genau der Richtung bewegt, die mit '''glFrontFace''' festgelegt wurde, dann ist diese Seite die Vorderseite.  <br>
Der Standartwert ist ''GL_CCW''. Das heißt, Polygone deren Punkte entgegen dem Uhrzeigersinn definiert wurden, werden als Vorderseite erkannt.
+
Der Standartwert ist '''GL_CCW'''. Das heißt, Polygone deren Punkte entgegen dem Uhrzeigersinn definiert wurden, werden als Vorderseite erkannt.
 +
 
 +
 
 +
== Beispiel ==
 +
[[Bild:Frontface_ccw.jpg|thumb|left|200px|GL_CCW]]
 +
[[Bild:Frontface_cw.jpg|thumb|right|200px|GL_CW]]
 +
Auf den Bildern ist ein ganz normaler Würfel, wobei die obere, die linke und die vordere Seite hell dargestellt sind. Die Perspektive ist auf beiden Bildern die gleiche. Allerdings wird links die Standard-Methode GL_CCW (gegen den Uhrzeigersinn) verwendet, während auf der rechten Seite GL_CW (mit dem Uhrzeigersinn) verwendet wird. Der Unterschied ist deutlich: wenn man bei einem auf GL_CCW ausgelegten Würfel GL_CW aktiviert, dann wird die betrachtete Seite ausgeblendet und die Innenseite ist zu sehen. (Natürlich nur bei aktivierten [[Backface_Culling]].)
 +
 
 +
 
  
<br>
 
 
== Hinweise ==
 
== Hinweise ==
 
Sollten Polygone teilweise oder komplett bei aktivierten Backfaceculling verschwinden, haben Sie die Reihenfolge der Eckpunkte teilweise vertauscht (Punkte in X-Form übergeben) oder die Punkte komplett in der entgegengesetzten Reihenfolge übergeben.
 
Sollten Polygone teilweise oder komplett bei aktivierten Backfaceculling verschwinden, haben Sie die Reihenfolge der Eckpunkte teilweise vertauscht (Punkte in X-Form übergeben) oder die Punkte komplett in der entgegengesetzten Reihenfolge übergeben.
  
<br>
+
Sie sollten, um OpenGL konform zu bleiben, die Vorderseite auf '''GL_CCW''' lassen. Dies erleichtert anderen OpenGL-Programmierern, die ihren Code benutzen, das Verständnis.
 +
 
 +
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
GL_INVALID_ENUM wird generiert wenn '''mode''' ein ungültiger Wert übergeben wird. <br>
+
'''GL_INVALID_ENUM''' wird generiert, wenn ''mode'' ein ungültiger Wert übergeben wird.
GL_INVALID_OPERATION wird generiert wenn ''glFrontFace'' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
+
 
 +
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glFrontFace''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.
 +
 
 +
 
 +
 
  
<br>
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
[[glGet]] mit Token GL_FRONT_FACE
+
[[glGet]] mit Token [[glGet#GL_FRONT_FACE|GL_FRONT_FACE]]
<br>
+
 
 +
 
 +
 
 
== Siehe auch ==
 
== Siehe auch ==
 +
[[glCullFace]], [[glLightModel]]
 +
 
Hintergrundwissen: [[Backfaceculling]]
 
Hintergrundwissen: [[Backfaceculling]]
 
[[glCullFace]], [[glLightModel]]
 
  
 
[[Kategorie:GL|FrontFace]]
 
[[Kategorie:GL|FrontFace]]
 +
[[Kategorie:GL1.0|FrontFace]]
 +
[[Kategorie:GL3|FrontFace]]

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

glFrontFace

Name

glFrontFace - bestimmt, welche Seite eines Polygons die Vorder- bzw. Rückseite ist.


Delphi-Spezifikation

procedure glFrontFace(mode: TGLenum);



Parameter

mode Gibt die Reihenfolge an, in der die Eckpunkte definiert werden müssen um eine Vorderseite zu bilden.

Zur Verfügung stehen zwei Konstanten:
GL_CW - Punkte in Uhrzeigerrichtung (clockwise).
GL_CCW - Punkte entgegen der Uhrzeigerrichtung (counterclockwise).

Standard ist GL_CCW.



Beschreibung

Eine Szene besteht vielfach aus geschlossenen Objekten oder andere Flächen, deren Rückseite man standardmäßig nicht sieht. Wenn man diese nicht sichtbaren Flächen vom Zeichnen ausschließt, kann man den Zeichenvorgang enorm beschleunigen. Das Ausschließen erfolgt über das Aktivieren des Backfacecullings mittels glEnable und dem Parameter GL_CULL_FACE.
Mithilfe von glCullFace kann man bestimmen, ob die Vorder- oder die Rückseiten eines Polygones nicht gezeichnet werden sollen.

Als Parameter wird glFrontFace eine Richtung übergeben, die festlegt, ob eine Seite eine Vorderseite ist.
Diese Richtungsangabe ist folgendermaßen zu verstehen:
Wenn ein imaginäres Objekt den Kanten des Polygons, beginnend beim ersten übergeben Eckpunkt nachfolgt und sich bezüglich dem Inneren des Polygones in genau der Richtung bewegt, die mit glFrontFace festgelegt wurde, dann ist diese Seite die Vorderseite.
Der Standartwert ist GL_CCW. Das heißt, Polygone deren Punkte entgegen dem Uhrzeigersinn definiert wurden, werden als Vorderseite erkannt.


Beispiel

GL_CCW
GL_CW

Auf den Bildern ist ein ganz normaler Würfel, wobei die obere, die linke und die vordere Seite hell dargestellt sind. Die Perspektive ist auf beiden Bildern die gleiche. Allerdings wird links die Standard-Methode GL_CCW (gegen den Uhrzeigersinn) verwendet, während auf der rechten Seite GL_CW (mit dem Uhrzeigersinn) verwendet wird. Der Unterschied ist deutlich: wenn man bei einem auf GL_CCW ausgelegten Würfel GL_CW aktiviert, dann wird die betrachtete Seite ausgeblendet und die Innenseite ist zu sehen. (Natürlich nur bei aktivierten Backface_Culling.)


Hinweise

Sollten Polygone teilweise oder komplett bei aktivierten Backfaceculling verschwinden, haben Sie die Reihenfolge der Eckpunkte teilweise vertauscht (Punkte in X-Form übergeben) oder die Punkte komplett in der entgegengesetzten Reihenfolge übergeben.

Sie sollten, um OpenGL konform zu bleiben, die Vorderseite auf GL_CCW lassen. Dies erleichtert anderen OpenGL-Programmierern, die ihren Code benutzen, das Verständnis.


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn mode ein ungültiger Wert übergeben wird.

GL_INVALID_OPERATION wird generiert, wenn glFrontFace innerhalb eines glBegin-glEnd-Blocks aufgerufen wird.



Zugehörige Wertrückgaben

glGet mit Token GL_FRONT_FACE


Siehe auch

glCullFace, glLightModel

Hintergrundwissen: Backfaceculling