Orice teorie este bună, dacă poate fi implementată pe Delphi :-). Prin urmare, sugerăm să nu le rafturi pentru a scrie primul program în OpenGL - și apoi, cu succes entuziasmat, du-te înapoi la teoria și modul în care să ia cunoștință de toate cărțile și site-uri pe un subiect care într-adevăr să devină un monstru de modelare tridimensională.
În primul rând, va trebui să facem lucrările pregătitoare:
- Reglați formatul pixel pentru a reflecta informațiile afișate;
- Creați un context OpenGL și pregătiți motorul OpenGL pentru lucru.
Formatul pixelilor este convenabil pentru a pune o procedură separată, pe care o vom aranja după cum urmează:
Aici, la completarea structurii TPixelFormatDescriptor, specificăm parametrii viitorului grafic grafic, inclusiv numărul de biți de culoare și tipul de pixeli (iPixelType). De asemenea, stabilim steaguri care, așa cum sugerează și numele, indică faptul că programul nostru va suporta OpenGL și ce vom desena în fereastră și vom folosi bufferul dublu (parametrul necesar pentru reproducerea obiectelor în mișcare).
Mai departe, apelând SelectPixelFormat, sistemul selectează formatul pixel adecvat - și îl atribuim (prin SetPixelFormat) ferestrei noastre.
Acum aveți nevoie pentru a inițializa contextul OpenGL al mijloacelor de funcțiile conținute în unitatea de Windows și configurați setările suplimentare ale motorului:
După cum puteți vedea, mai întâi setăm formatul pixel necesar pentru grafica noastră. Acum, folosind funcția wglCreateContext, vom crea un context OpenGL și apoi vom face contextul actual. Mai mult, folosind funcțiile deja universale **, vom face setarea "pacii" pe care o vom crea. Pentru a face acest lucru, utilizați glClearColor pentru a șterge contextul și pentru ao umple cu o culoare neagră de 60%. În continuare, alegeți o matrice de proiecții, care definește modul în care obiectele tridimensionale sunt proiectate pe ecranul plan (în fereastra de coordonate) și prin glLoadIdentity stabilesc matricea de identitate și să definească granițele în planul „lume coordonatele“ folosind un apel glFrustum. După aceea, încărcăm matricea modelului și facem deplasarea lui (glTranslatef).
Ce vom desena?
Desigur, a fost posibilă trasarea unei simple piramide sau a unui cub. Dar vom face mai mult - tragem o "declarație de iubire" ** (Figura 1). În mod specific pentru această metodă de "enumerare științifică" a fost elaborat un model care descrie curba corespunzătoare:
Rămâne doar să o traducem de la limba matematică la omul normal.
Pregătirea stadiului va începe prin conectarea diferitelor funcții suplimentare, fără care este posibilă continuarea lucrărilor. Aceste funcții sunt prescrise în metoda BeginPaint, precum și în metoda FormResize (astfel încât dimensiunea obiectului să se modifice în mod corespunzător când se modifică dimensiunea fișierului). Pentru aceasta, folosim funcția glEnable cu parametrii corespunzători.Apoi, în FormPaint, vom folosi metodele DrawFace și DrawElement pregătite în prealabil (a se vedea lista de mai jos) pentru a desena obiectul menționat. Și pentru a face chiar mai mult "căldură" folosim posibilitățile OpenGL de a ilumina scena.
Din punctul de vedere al complexității dezvoltării OpenGL este comparabilă cu alte biblioteci similare. Deci, pe de o parte nu este nici o diferență ce să înțelegi și ce să studiezi. Dar dintr-un punct rezonabil de vedere, orice proiect 3D ar trebui să sprijine cel puțin OpenGL ca una dintre opțiuni. La urma urmei, lucrurile serioase sunt considerate și vizualizate, de obicei sub Unix / IRIX / Linux / FreeBSD, și în același timp ar fi greșit să ignorați utilizatorii Windows. Deci, OpenGL este doar acel limbaj universal și numitor comun care permite aplicațiilor dvs. să migreze liber de la o platformă la alta