Specificarea dimensiunii punctului în opengl

Când desenați un singur punct, dimensiunea implicită este un pixel. Puteți modifica valoarea unui punct utilizând funcția glPointSize.void glPointSize (dimensiunea GLofloat);







Funcția glPointSize ia un parametru care specifică diametrul aproximativ în pixeli al punctului desenat. Nu sunt acceptate toate dimensiunile, deci trebuie să verificați dacă dimensiunea specificată pentru acest punct este disponibilă. Pentru a găsi gama de mărimi și cel mai mic interval între ele, se folosește următorul cod:

Specificarea dimensiunii punctului în opengl

Aici setul de mărimi va conține două elemente - cea mai mică și cea mai mare valoare posibilă a glPointsize. În plus, pasul variabilei va fi egal cu cea mai mică treaptă posibilă între dimensiunile punctelor. Specificația OpenGL necesită suport pentru o singură dimensiune de punct - 1.0. Implementarea software-ului OpenGL de la Microsoft, de exemplu, vă permite să modificați mărimea punctelor de la 0.5 la 10.0 cu o dimensiune minimă de pas de 0.125. Setarea unei mărimi care nu se află în interval nu este interpretată ca o eroare. În schimb, este utilizată cea mai mare sau cea mai mică dimensiune acceptată, cea mai apropiată de valoarea specificată. Punctele, spre deosebire de alte obiecte geometrice, nu se schimbă atunci când sunt împărțite de factorul de perspectivă. Ie ele nu devin mai mici atunci când sunt departe de punctul de observație și nu devin mai mari atunci când se apropie de observator. Punctele sunt întotdeauna pătrate. Chiar și folosind glPointsize pentru a mări dimensiunea punctelor, trebuie doar să obțineți pătrate mari! Pentru a vedea punctele rotunde, trebuie să utilizați tehnica anti-aliasing (vedeți următoarea secțiune).







OpenGL stochează starea mai multor variabile și setări. Acest set de setări se numește OpenGL mașină de stat finită. Puteți trimite o întrebare mașinii de stare finită pentru a determina starea oricărei variabile sau setări. Folosind mai multe variante de glGet, puteți interoga orice caracteristică sau caracteristică pe care ați activat sau dezactivat cu glEnable / glDisable. Acest lucru se aplică și setărilor numerice stabilite cu glSet. Luați în considerare un exemplu în care sunt utilizate mai multe astfel de funcții. Codul din lista 3.3 oferă aceeași formă spirală ca primul exemplu, dar de această dată dimensiunea punctelor crește treptat de la cea mai mică dimensiune posibilă la cea mai mare. Acest exemplu este preluat din programul lor POINTSZ, listat pe CD-ROM în dosarul corespunzător acestui capitol. Rezultatul programului POINTSZ, prezentat în Fig. 3.4, obținut utilizând implementarea software-ului Microsoft. În Fig. 3.5 arată același program care rulează pe un accelerator hardware care acceptă puncte mari.

Specificarea dimensiunii punctului în opengl

Prin setarea dimensiunii punctului este mai mare decât returnează dimensiunea variabilei, puteți viziona, de asemenea, (în funcție de hardware-ul) care utilizează OpenGL cea mai mare dimensiune punct disponibile, dar nu-l crească în imagine. Acest moment este comun pentru toți parametrii funcțiilor OpenGL care au o gamă de valori acceptabile. Valorile care nu se încadrează în acest interval sunt forțate în ea. Valori prea mici sunt convertite la cea mai mică valoare acceptabilă, dar prea mare - în cele mai multe.

Cel mai evident aspect pe care l-ați observat la lansarea programului POINTSZ este că punctele de dimensiune mai mare sunt pur și simplu cuburi mari. Acest comportament este implicit, dar de obicei în multe aplicații este nedorit. În plus, vă puteți întreba ce se va întâmpla dacă măriți dimensiunea unui punct cu o valoare mai mare decât una. Dacă valoarea 1.0 reprezintă un pixel, cum să desenați mai puțin de un pixel sau, de exemplu, 2,5 pixeli?







Trimiteți-le prietenilor: