glPolygonOffset

Aus DGL Wiki
Version vom 8. Mai 2005, 18:18 Uhr von Flash (Diskussion | Beiträge) (Neuer Artikel)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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 aktiviert ist, wird der Tiefenwert jedes Fragments um einen bestimmten Wert verschoben, nachdem der eigentliche Tiefenwert aus den Vertexinformationen bestimmt wurde. Der Wert wird errechnet aus
factor * DZ + r * units, wobei

  • DZ die Maßeinheit für die Verschiebung 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

  • rendering hidden-line images.
  • Decals auf Oberflächen zu mappen.
  • Solide Körper mit beleuchteten Kanten (highlighted edges) zu rendern.


Für Korrektur
When GL_POLYGON_OFFSET is enabled, each fragment's depth value will be offset after it is interpolated from the depth values of the appropriate vertices. The value of the offset is factor * DZ + r * units, where DZ is a measurement of the change in depth relative to the screen area of the polygon, and r is the smallest value that is guaranteed to produce a resolvable offset for a given implementation. The offset is added before the depth test is performed and before the value is written into the depth buffer.

glPolygonOffset is useful for rendering hidden-line images, for applying decals to surfaces, and for rendering solids with highlighted edges.


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, glEnable, glGet, glIsEnabled, glLineWidth, glStencilOp, glTexEnv