Ce este o sferă OpenGL®?

O sferă Open Graphics Library® (OpenGL®), la nivelul cel mai elementar, este un obiect tridimensional (3D) format dintr-o serie de triunghiuri sau patrulatere ale căror vârfuri sunt toate echidistante de un punct central. Aceasta înseamnă că, atunci când o sferă OpenGL® este privită din orice unghi, conturul apare ca un cerc perfect pentru privitor, deși iluminarea și umbrirea ar putea da volumului un aspect mai asemănător unei bile. Numărul de vârfuri utilizate pentru a crea o sferă OpenGL® determină netezimea obiectului în aproximarea sa cu o sferă reală, cu orice mai puțin de 12 puncte creând un obiect care nu poate fi considerat o sferă. Chiar dacă o sferă este considerată o formă primitivă în multe aplicații și biblioteci grafice, OpenGL® nu are nicio funcționalitate înnăscută pentru a reda o sferă, ceea ce înseamnă că seturile de instrumente suplimentare, cum ar fi setul de instrumente utilitare OpenGL® (GLUT) trebuie utilizate pentru a evita scrierea codului. pentru a genera manual forma.

Când aveți de-a face cu vârfuri în OpenGL®, cea mai mică cantitate de puncte care poate fi folosită pentru a genera o sferă cu un anumit grad de netezime este 12, creând un obiect cu 20 de fețe triunghiulare cunoscut sub numele de icosaedru. Fără o prelucrare ulterioară, o sferă OpenGL® construită în acest fel va avea colțuri ascuțite vizibile în jurul marginilor, ceea ce ar putea fi acceptabil pentru unele aplicații. Pentru a obține o sferă mai rotunjită, fiecare față trebuie să fie subdivizată în continuare.

Subdivizarea unui icosaedru pentru a crește numărul de vârfuri pe care le conține și a forma o sferă OpenGL® mai netedă implică crearea de noi vârfuri în centrul fiecărei margini a fiecărui triunghi existent. Aceasta înseamnă că fiecare față triunghiulară va conține acum patru triunghiuri. Subdiviziunea poate continua atât cât este necesar, deși adăugarea de puncte în mod exponențial poate crea rapid un obiect care are un timp de randare mare și poate deveni greu de tradus.

În ciuda unor avantaje matematice pe care o sferă OpenGL® le oferă programatorilor, cum ar fi normalele suprafeței care pot fi calculate cu ușurință din coordonatele vârfurilor, texturarea unei sfere poate prezenta unele complexități. Folosirea unei texturi bidimensionale standard (2D) proiectată pe sferă înseamnă că zonele de sus și de jos ale imaginii de textură vor deveni comprimate, deoarece forma triunghiurilor din apropierea polilor sferei sunt comprimate. Pentru a depăși acest lucru, ar putea fi utilizată maparea cuburilor sau programatorul ar putea genera manual coordonatele texturii pentru obiect.

Un factor ar trebui remarcat despre utilizarea unei biblioteci de utilitate pentru generarea unei sfere OpenGL®. O sferă generată de GLUT sau seturi de instrumente similare poate fi uneori dificil de modificat, optimizat și gestionat în cadrul OpenGL®. Din acest motiv, uneori este benefic să folosiți cod scris personalizat pentru a genera o sferă OpenGL®, astfel încât să fie creată și să poată fi folosită în cel mai eficient mod posibil în cadrul programului.