gl.PointSize(size)
gl.PointSize()
gibt den gerasterten Durchmesser von aliasierten und
antialiatisierten Punkten an. Die Verwendung einer anderen Punktgröße
als 1 hat unterschiedliche Auswirkungen, je nachdem, ob die
Punkt-Antialiasing-Funktion aktiviert ist. Um Punktantialiasing
zu aktivieren und zu deaktivieren, rufen Sie gl.Enable()
und gl.Disable() mit dem Argument #GL_POINT_SMOOTH
auf.
Die Punktantialiasing-Funktion ist zunächst deaktiviert.
Wenn die Punktantialiasing-Funktion deaktiviert ist, wird die tatsächliche Größe durch Rundung der gelieferten Größe auf die nächste Ganzzahl bestimmt (wenn die Rundung zu dem Wert 0 führt, ist es, als ob die Punktgröße 1 wäre). Wenn die gerundete Größe ungerade ist, dann wird der Mittelpunkt (x,y) des Pixelfragments, das den Punkt repräsentiert, wie folgt berechnet
(xw + 0.5, yw + 0.5) |
wobei w-Indizes Fensterkoordinaten angeben. Alle Pixel, die innerhalb des quadratischen Rasters der abgerundeten Größe liegen und auf (x,y) zentriert sind, bilden das Fragment. Wenn die Größe gleich ist, ist der Mittelpunkt
(xw + 0.5, yw + 0.5) |
und die Zentren des gerasterten Fragments sind die halb ganzzahligen Fensterkoordinaten innerhalb des Quadrats der abgerundeten Größe, zentriert auf (x,y). Allen Pixelfragmenten, die beim Rastern eines nicht-antialisierten Punktes erzeugt werden, werden die gleichen zugehörigen Daten zugewiesen, die des dem Punkt entsprechenden Scheitelpunktes.
Wenn Antialiasing aktiviert ist, erzeugt die Punktrasterung für jedes Pixelquadrat ein Fragment, das den Bereich schneidet, der innerhalb des Kreises liegt und einen Durchmesser hat, der gleich der aktuellen Punktgröße ist und auf den Punkt (xw,yw) zentriert ist. Der Abdeckungswert für jedes Fragment ist der Fensterkoordinatenbereich des Schnittpunktes des kreisförmigen Bereichs mit dem entsprechenden Pixelquadrat. Dieser Wert wird gespeichert und im letzten Schritt der Rasterung verwendet. Die jedem Fragment zugeordneten Daten sind die Daten, die dem zu rasternden Punkt zugeordnet sind.
Nicht alle Größen werden unterstützt, wenn die Punktantialiasing-Funktion
aktiviert ist. Wenn eine nicht unterstützte Größe angefordert wird, wird
die nächstgelegene unterstützte Größe verwendet. Nur die Größe 1 wird
garantiert unterstützt, andere sind von der Implementierung abhängig. Um
den Bereich der unterstützten Größen und die Größendifferenz zwischen den
unterstützten Größen innerhalb des Bereichs abzufragen, rufen Sie gl.Get()
mit den Argumenten #GL_POINT_SIZE_RANGE
und #GL_POINT_SIZE_GRANULARITY
auf.
Die durch gl.PointSize()
angegebene Punktgröße wird immer zurückgegeben, wenn
#GL_POINT_SIZE
abgefragt wird. Das Befestigen und Runden für aliasierte und
antialiatisierte Punkte hat keinen Einfluss auf den angegebenen Wert.
Eine nicht-antialisierte Punktgröße 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 Antialiaspunkte, gerundet auf den nächsten ganzzahligen Wert.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_INVALID_VALUE
wird erzeugt, wenn size
kleiner oder gleich 0 ist.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.PointSize()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
#GL_POINT_SIZE
gl.Get() mit dem Argument #GL_POINT_SIZE_RANGE
gl.Get() mit dem Argument #GL_POINT_SIZE_GRANULARITY
gl.IsEnabled() mit dem Argument #GL_POINT_SMOOTH