glPolygonOffset: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) (→Siehe auch) |
K (→Siehe auch: glDepthRange hinzugefügt) |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
== 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. | ||
− | |||
Zeile 11: | Zeile 10: | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
procedure '''glPolygonOffset'''(''factor'': TGLfloat; ''units'': TGLfloat); | procedure '''glPolygonOffset'''(''factor'': TGLfloat; ''units'': TGLfloat); | ||
− | |||
Zeile 19: | 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'''. |
|} | |} | ||
Zeile 29: | Zeile 27: | ||
== Beschreibung == | == Beschreibung == | ||
− | Wenn | + | 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. | ||
* Solide Körper mit beleuchteten Kanten (highlighted edges) zu rendern. | * Solide Körper mit beleuchteten Kanten (highlighted edges) zu rendern. | ||
* [[ZFighting]] zu beheben. | * [[ZFighting]] zu beheben. | ||
− | |||
Zeile 54: | Zeile 51: | ||
== 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. |
+ | == Zugehörige Wertrückgaben == | ||
+ | [[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]] | ||
− | |||
== 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
Inhaltsverzeichnis
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