nbsp OpenGL + Delphi
Grafică primitivă
Grafica primitivă - nu înseamnă că va fi slabă sau teribilă. Acest lucru înseamnă că obiectele complexe constau dintr-un număr mare de simple. Astăzi voi încerca să ia în considerare cât mai multe primitive, cu ajutorul cărora puteți construi scene complexe. Pregătiți-vă, lecția va fi minunată, dar foarte informativă. Pentru înțelegerea lui, va trebui să vă amintiți cursul de școală al geometriei (suficient încât ați trecut până la clasa a 9-a).
De fapt, întreaga grafică OpenGL este construită pe primitive. Cel mai primitiv este Vertex (dot). Cu ea, ne-am intalnit deja si putem trage. Linii și pătrate, de asemenea, omiteți, pentru că am lucrat deja foarte mult cu ei. Singurul lucru care va fi cu adevărat nou pentru dvs. este triunghiurile. Din anumite motive, încă nu le-am folosit, deși aceasta este baza OpenGL. Toate graficele din această bibliotecă sunt calculate și desenate folosind triunghiuri.
Luați o clipă și priviți figura 1. Aici puteți vedea diferite forme, dar toate constau în primitivi. Figurile superioare sunt realizate din linii, mijlocul triunghiurilor și partea de jos a pătratelor.
Figura 1. Primitive
Să ne uităm la fiecare primitiv în detaliu, dar mai întâi să aruncăm o privire la noua procedură:
Nu aveți prea multă inteligență pentru a ghici că această procedură specifică grosimea liniei. Ea afectează numai desenarea liniilor, pătratelor și triunghiurilor pe care nu le afectează.
Acum ia în considerare primul primitiv dintre cele două linii:
glBegin cu parametrul GL_LINES deschide un set de linii. Desenez aici două linii paralele de diferite culori și poți trage unul sau chiar 10. Între glBegin (GL_LINES); și glEnd trebuie să fie un număr par de vârfuri. Dacă este unul ciudat, acesta din urmă va fi pur și simplu aruncat și nu va afecta scena.
glBegin cu parametrul GL_LINE_LOOP deschide un set de linii închise. Acest primitiv este foarte similar cu cel precedent, cu o singură diferență - ultimul vârf se va închide cu primul.
acum du-te la triunghiuri. Pentru claritate, uita-te la primitive situate în imagine în centru.
glBegin cu parametrul GL_TRIANGLES desenează triunghiuri. Numărul de vârfuri trebuie să fie mai mare de trei, vârfurile suplimentare sunt aruncate.
glBegin cu parametrul GL_TRIANGLES_STRIP desenează triunghiuri cu vârfuri închise. Ultimul vârf al primului triunghi este primul vârf al celui de-al doilea triunghi.
glBegin cu parametrul GL_TRIANGLE_FAN desenează triunghiuri cu fețe închise. Ultima față a primului triunghi este prima față a celui de-al doilea triunghi. Numărul de vârfuri poate fi orice (nu mai puțin de trei), deoarece ultima față conține două puncte deja și adăugând un altul produce un nou triunghi.
Acum mergem la pătrate. Aici voi scrie abreviat pentru a economisi spațiu. Trebuie să pierzi deja tot ce zboară.
Desenează pătrate. Numărul de vârfuri ar trebui să fie un număr mai mare decât al patrulea.
Desenează pătrate cu o față comună. Ultima față a primului pătrat este prima pentru a doua. Numărul de vârfuri trebuie să fie mai mare sau egal cu cel de-al patrulea și un multiplu al celui de-al doilea.
Desenează un poligon. Este doar un set de vârfuri combinate unul cu celălalt. Sincer, nu am știut ce exemplar mai bun să aduc. Exemplul meu nu este foarte reușit, dar încercați să jucați cu vârfurile, să le mutați în direcții diferite și să priviți rezultatul.
Probele de cod sursă iau aici fișierele Antet preluate pe pagina mea în secțiunea "Utilitate".