gl.PolygonStipple(maskArray)
maskArray
ist eine Tabelle mit einem 32*32 Punktemuster, das als monochrome
Bitmap gespeichert ist und nur 1 Bit pro Pixel verwendet. Die Bitmap wird in
einer Tabelle übergeben, die aus Teilen von 8 Pixeln besteht, die in ein Byte
gepackt sind. Für ein 32*32 Punktemuster müssen Sie also eine Tabelle
übergeben, die 128 Byte-Elemente mit jeweils 8 Pixeln enthält. Dies kann
entweder eine eindimensionale Tabelle mit 128 Byte-Einträgen oder eine
zweidimensionale Tabelle mit 32 Untertabellen mit je 4 Byte-Einträgen sein
(diese 4 Byte-Einträge beschreiben eine Zeile von je 32 Pixeln). Die Daten
werden in einem zusammenhängenden Speicherblock ohne Ausfüllung oder spezielle
Ausrichtungen an GL übergeben, so dass keine exotischen Einstellungen
mit gl.PixelStore() vorgenommen werden. Sie sind aktiv,
da gl.PolygonStipple()
erwartet, dass die Musterdaten im Speicher gespeichert
werden, genau wie die Pixeldaten, die an gl.DrawPixels()
geliefert werden mit Höhe und Breite gleich 32, einem Pixelformat von #GL_COLOR_INDEX
und Datentyp von #GL_BITMAP
. Das heißt, das Punktmuster wird als 32x32-Feld von
1-Bit-Farbindizes dargestellt, die in unsignierten Bytes gepackt sind.
gl.PixelStore() Parameter wie #GL_UNPACK_SWAP_BYTES
und
#GL_UNPACK_LSB_FIRST
beeinflussen die Zusammensetzung der Bits zu einem Punktmuster.
Pixelübertragungsvorgänge (Shift, Versatz, Pixel-Map) werden nicht auf das Punktbild angewendet.
Um das Polygon-Punktieren zu aktivieren und zu deaktivieren, rufen Sie
gl.Enable() und gl.Disable() mit dem
Argument #GL_POLYGON_STIPPLE
auf. Das Punktieren von Polygonen ist zunächst
deaktiviert. Wenn es aktiviert ist, wird ein gerastertes Polygonfragment
mit den Fensterkoordinaten xw und yw an die nächste Stufe von GL gesendet,
wenn und nur wenn das (xw%32)-te Bit in der (yw%32)-ten Zeile des
Punktemusters 1 (eins) ist. Wenn das Polygon-Punktieren deaktiviert ist,
ist es so, als ob das Punktemuster aus allen 1's besteht.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.PolygonStipple()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
gl.IsEnabled() mit dem Argument #GL_POLYGON_STIPPLE