glPolygonOffset: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beschreibung)
K (Siehe auch: glDepthRange hinzugefügt)
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glPolygonOffset =
 
= glPolygonOffset =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glPolygonOffset''' - setzt die Skalierung und Einheiten, die für die Tiefenberechnung verwendet werden sollen.
 
'''glPolygonOffset''' - setzt die Skalierung und Einheiten, die für die Tiefenberechnung verwendet werden sollen.
  
<br>
+
 
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glPolygonOffset'''(''factor'': TGLfloat; ''units'': TGLfloat);
 
  procedure '''glPolygonOffset'''(''factor'': TGLfloat; ''units'': TGLfloat);
  
<br>
+
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 16: Zeile 17:
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''factor''  
 
! ''factor''  
| Definiert einen Skalierungsfaktor der benutzt wird um einen variablen Tiefenversatz (Depth Offset) für jedes Polygon.<br> Der '''Initialwert ist 0'''.
+
| Definiert einen Skalierungsfaktor, der benutzt wird, um einen variablen Tiefenversatz (Depth Offset) für jedes Polygon.<br> Der '''Initialwert ist 0'''.
 
|-
 
|-
 
! ''units''  
 
! ''units''  
| Wird mit einem implementationsabhängigen Wert multipliziert um einen konstanten Tiefenversatz zu erreichen.<br> Der '''Initialwert ist 0'''.
+
| Wird mit einem implementationsabhängigen Wert multipliziert, um einen konstanten Tiefenversatz zu erreichen.<br> Der '''Initialwert ist 0'''.
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Wenn GL_POLYGON_OFFSET aktiviert ist, wird der Tiefenwert jedes [[Fragment]]s um einen bestimmten Wert verschoben, nachdem der eigentliche Tiefenwert aus den betreffenden Vertexinformationen interpoliert wurde. Der Wert wird errechnet aus <br>
+
Wenn '''GL_POLYGON_OFFSET_FILL''', '''GL_POLYGON_OFFSET_LINE''' oder '''GL_POLYGON_OFFSET_POINT''' aktiviert ist, wird der Tiefenwert jedes [[Fragment]]s um einen bestimmten Wert verschoben, nachdem der eigentliche Tiefenwert aus den betreffenden Vertexinformationen interpoliert wurde. Der Wert wird errechnet aus <br>
 
''factor'' * DZ + r * ''units'', wobei<br>  
 
''factor'' * DZ + r * ''units'', wobei<br>  
 
* DZ die Maßeinheit für die Tiefenverschiebung relativ zum Bildschirmbereich des Polygons und
 
* DZ die Maßeinheit für die Tiefenverschiebung relativ zum Bildschirmbereich des Polygons und
* r der kleinste Wert ist, der garantiert noch eine gültige Verschiebung für die aktuelle OpenGL Implementation liefert.
+
* r der kleinste Wert ist, der garantiert noch eine gültige Verschiebung für die aktuelle OpenGL-Implementation liefert.
 
Der Offset wird addiert bevor der [[Tiefentest]] durchgeführt wird und bevor die Werte in den [[Tiefenpuffer]] geschrieben werden.
 
Der Offset wird addiert bevor der [[Tiefentest]] durchgeführt wird und bevor die Werte in den [[Tiefenpuffer]] geschrieben werden.
  
'''glPolygonOffset''' ist nützlich um
+
'''glPolygonOffset''' ist nützlich, um
 
* Raster-Bildern (engl: hidden-line images) zu rendern.
 
* Raster-Bildern (engl: hidden-line images) zu rendern.
 
* [[Decals]] auf Oberflächen zu mappen.
 
* [[Decals]] auf Oberflächen zu mappen.
Zeile 37: Zeile 39:
 
* [[ZFighting]] zu beheben.
 
* [[ZFighting]] zu beheben.
  
<br>
+
 
  
 
== Hinweise ==
 
== Hinweise ==
Zeile 46: Zeile 48:
 
'''glPolygonOffset''' hat keinen Effekt auf die [[Selektion]].  
 
'''glPolygonOffset''' hat keinen Effekt auf die [[Selektion]].  
  
<br>
+
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
'''GL_INVALID_OPERATION''' wird generiert wenn '''glPolygonOffset''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
+
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glPolygonOffset''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.  
 +
 
  
<br>
 
  
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
[[glIsEnabled]] mit Token GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_LINE, oder GL_POLYGON_OFFSET_POINT<br>
+
[[glIsEnabled]] mit Token [[glIsEnabled#GL_POLYGON_OFFSET_FILL|GL_POLYGON_OFFSET_FILL]], [[glIsEnabled#GL_POLYGON_OFFSET_LINE|GL_POLYGON_OFFSET_LINE]], oder [[glIsEnabled#GL_POLYGON_OFFSET_POINT|GL_POLYGON_OFFSET_POINT]]
 +
 
 
[[glGet]] mit Token [[glGet#GL_POLYGON_OFFSET_FACTOR|GL_POLYGON_OFFSET_FACTOR]] oder [[glGet#GL_POLYGON_OFFSET_UNITS|GL_POLYGON_OFFSET_UNITS]]
 
[[glGet]] mit Token [[glGet#GL_POLYGON_OFFSET_FACTOR|GL_POLYGON_OFFSET_FACTOR]] oder [[glGet#GL_POLYGON_OFFSET_UNITS|GL_POLYGON_OFFSET_UNITS]]
  
<br>
+
 
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glDepthFunc]], [[glEnable]], [[glGet]], [[glIsEnabled]], [[glLineWidth]], [[glStencilOp]], [[glTexEnv]]
+
[[glDepthFunc]], [[glDepthRange]], [[glEnable]], [[glGet]], [[glIsEnabled]], [[glLineWidth]], [[glStencilOp]], [[glTexEnv]]
 
 
  
 
[[Kategorie:GL|PolygonOffset]]
 
[[Kategorie:GL|PolygonOffset]]
 +
[[Kategorie:GL1.1|PolygonOffset]]

Aktuelle Version vom 18. Oktober 2010, 12:37 Uhr

glPolygonOffset

Name

glPolygonOffset - setzt die Skalierung und Einheiten, die für die Tiefenberechnung verwendet werden sollen.


Delphi-Spezifikation

procedure glPolygonOffset(factor: TGLfloat; units: TGLfloat);


Parameter

factor Definiert einen Skalierungsfaktor, der benutzt wird, um einen variablen Tiefenversatz (Depth Offset) für jedes Polygon.
Der Initialwert ist 0.
units Wird mit einem implementationsabhängigen Wert multipliziert, um einen konstanten Tiefenversatz zu erreichen.
Der Initialwert ist 0.



Beschreibung

Wenn GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_LINE oder GL_POLYGON_OFFSET_POINT aktiviert ist, wird der Tiefenwert jedes Fragments um einen bestimmten Wert verschoben, nachdem der eigentliche Tiefenwert aus den betreffenden Vertexinformationen interpoliert wurde. Der Wert wird errechnet aus
factor * DZ + r * units, wobei

  • DZ die Maßeinheit für die Tiefenverschiebung relativ zum Bildschirmbereich des Polygons und
  • r der kleinste Wert ist, der garantiert noch eine gültige Verschiebung für die aktuelle OpenGL-Implementation liefert.

Der Offset wird addiert bevor der Tiefentest durchgeführt wird und bevor die Werte in den Tiefenpuffer geschrieben werden.

glPolygonOffset ist nützlich, um

  • Raster-Bildern (engl: hidden-line images) zu rendern.
  • Decals auf Oberflächen zu mappen.
  • Solide Körper mit beleuchteten Kanten (highlighted edges) zu rendern.
  • ZFighting zu beheben.


Hinweise

glPolygonOffset ist ab OpenGL Version 1.1 verfügbar.

glPolygonOffset hat keinen Effekt auf die Tiefenwerte im Feedbackpuffer.

glPolygonOffset hat keinen Effekt auf die Selektion.


Fehlermeldungen

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


Zugehörige Wertrückgaben

glIsEnabled mit Token GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_LINE, oder GL_POLYGON_OFFSET_POINT

glGet mit Token GL_POLYGON_OFFSET_FACTOR oder GL_POLYGON_OFFSET_UNITS


Siehe auch

glDepthFunc, glDepthRange, glEnable, glGet, glIsEnabled, glLineWidth, glStencilOp, glTexEnv