gl.LineWidth(width)
gl.LineWidth()
gibt die gerasterte Breite sowohl von aliasierten als auch von
antialisierten Linien an. Die Verwendung einer anderen Linienbreite als 1 hat
unterschiedliche Auswirkungen, je nachdem, ob die Linien-Antialiasing-Funktion
aktiviert ist. Um die Linienantialiasing zu aktivieren und zu deaktivieren,
rufen Sie gl.Enable() und gl.Disable()
mit dem Argument #GL_LINE_SMOOTH
auf. Die Linienantialiasing-Funktion ist
zunächst deaktiviert.
Wenn die Linienantialiasing-Funktion deaktiviert ist, wird die tatsächliche Breite durch Rundung der gelieferten Breite auf die nächste Ganzzahl bestimmt (wenn die Rundung zum Wert 0 führt, ist es, als ob die Linienbreite 1 wäre). Wenn delta x >= delta y ist, werden in jeder gerasterten Spalte i Pixel gefüllt, wobei i der gerundete Wert der Breite ist. Andernfalls werden in jeder Zeile, die gerastert wird, i Pixel gefüllt.
Wenn Antialiasing aktiviert ist, erzeugt die Linienrasterung für jedes Pixelquadrat ein Fragment, das den innerhalb des Rechtecks liegenden Bereich schneidet. Die Breite ist gleich der aktuellen Linienbreite, dessen Länge gleich der tatsächlichen Länge der Linie ist und das auf das mathematische Liniensegment zentriert ist. Der Abdeckungswert für jedes Fragment ist der Fensterkoordinatenbereich des Schnittpunktes des rechteckigen Bereichs mit dem entsprechenden Pixelquadrat. Dieser Wert wird gespeichert und im letzten Schritt der Rasterung verwendet.
Nicht alle Breiten können unterstützt werden, wenn die
Linienantialiasing-Funktion aktiviert ist. Wenn eine nicht unterstützte
Breite gewünscht wird, wird die nächstgelegene unterstützte Breite
verwendet. Nur die Breite 1 wird garantiert unterstützt, andere
sind von der Implementierung abhängig. Ebenso gibt es einen Bereich
für aliasierte Linienbreiten. Um den Bereich der unterstützten
Breiten und die Größendifferenz zwischen den unterstützten Breiten
innerhalb des Bereichs abzufragen, rufen Sie den Befehl gl.Get()
mit dem Argumente #GL_LINE_WIDTH_RANGE
und #GL_LINE_WIDTH_GRANULARITY
auf.
Die durch gl.LineWidth()
angegebene Linienbreite wird immer zurückgegeben,
wenn #GL_LINE_WIDTH
abgefragt wird. Das Festlegen und Runden für aliasierte
und antialiatisierte Linien hat keinen Einfluss auf den vorgegebenen Wert.
Die nicht-antialisierte Linienbreite kann auf ein implementierungsabhängiges Maximum festgelegt werden. Obwohl dieses Maximum nicht abgefragt werden kann, darf es nicht kleiner sein als der Maximalwert für antialiatisierte Linien, gerundet auf den nächsten ganzzahligen Wert.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_INVALID_VALUE
wird erzeugt, wenn width
kleiner oder gleich 0 ist.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.LineWidth()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
#GL_LINE_WIDTH
gl.Get() mit dem Argument #GL_LINE_WIDTH_RANGE
gl.Get() mit dem Argument #GL_LINE_WIDTH_GRANULARITY
gl.IsEnabled() mit dem Argument #GL_LINE_SMOOTH