OpenGL

Open Graphics Library ili skraćeno OpenGl je cross-platform standard i API koji se koristi za vizualiziranje 2D i 3D grafičkih elemenata.
Korištenjem OpenGL-a uvelike se olakšava posao razvoja grafičkih aplikacija, korištenjem dobro definirane i dokumentirane metode razvoja koja podržava apstrakcije sadašnjeg i budućeg hardwera.
OpenGL ima dvije glavne srhe:

  • Skrivanje kompleksnosti interakcije sa različitim 3D akceleratorima prezentirajući jedno, uniformno sučelje
  • Izednačuje razlike između drugačijeg hardwera zahtjevajući podršku svih funkcija unutar OpenGL-a, za sve implementacije

OpenGL ES

OpenGL for Embedded Systems ili skraćeno OpenGL ES je pojednostavljena inačica OpenGL-a, čiji je cilj eliminiranja manje potrebnih funkcionalnosti.
Time se pruža sustav koji je ujedno lakši za naučiti kao i jednostavniji za implementiranje

OpenGL ES i Python

Kako bi mogli koristiti OpenGl ES u Pythonu, potrebno je odabrati određenu knjižnicu koja to omogućuje. Jedna od najpopularnijih knjižnica za takvu svrhu je PyOpenGl
Knjižnica PyOpenGL radi kao "povezivajuća" knjižnica za Python program, gdje povezuje njegove vrijednosti u GLUT knjižnicu. Na taj način PyOpenGL podržava različite platforme, kao što su Windows, Linux i macOS.
PyOpenGL podržava:

  • OpenGL - inačice 1.1 - 4.4
  • GLES - inačice 1 - 3.1
  • GLU
  • EGL, WGL, GLX
  • GLUT, FreeGLUT

PyOpenGL podržava rad i sa različitim vanjskim bibliotekama za grafička korisnička sučelja, a neka od njih su:

  • wxPython
  • PyGame
  • PyQt i PySide
  • Raspberry Pi BCM

GLUT

Program GLUT je utility toolkit za OpenGL, koji je namjenjen za razvoj mali do srednjih OpenGL programa
GLUT implementira jednostavan windowing API, te time uvelike olakšava učenje i istraživanje programiranja u OpenGL-u.
Osim ostalih funkcionalnosti GLUT podržava i:

  • Više programskih prozora za renderiranje OpenGL-a
  • Event processing baziran na opozivanju(callback)
  • "Idle" rutine i procesiranje
  • Utility rudine za generiranje raznih vrsta objekata
  • Podrška za bitmap i stroke fontove

Praktični primjeri

Kako bi se u nastavku praktični primjeri mogli pokrenuti potrebno je instalirati određene biblioteke, te za Ubuntu operacijska računala ona su:

  • pip install PyOpenGL PyOpenGL_accelerate
  • sudo apt-get install python-opengl

Nadalje, kako bi mogli krenuti sa izradom 3D oblika prvo je potrebno postaviti određene parametre i funkcije, unutar main funkcije su posatvljenje sve naredbe za postavljanje programa. Slika funkcije je prikazana u nastavku

Na slici možemo vidjeti naredbe koje su objašnjenje u nastavku

  • glutInit - zaduženo za pokretanje glut instance
  • glutInitDisplayMode - sa GLUT_RGBA parametrom naredba postavlja prikaz zaslona u boju
  • glutInitWindowSize - postavlja veličinu prozora koji će se otvoriti kada se pokrene program
  • glutInitWindowPosition - postavlja poziciju gdje će prozor otvoriti na zaslonu
  • glutCreateWindow - otvara novi prozor na zaslonu
  • glutDisplayFunc - za parametar se postavlja funkcija koja će se stalno pozivati dok je otvoren prozor
  • glutMainLoop - zadržava prozor otvorenim kako se prikaz na prozoru vrti u petlji

Primjer stošca

U nastavku je programski kod za kreiranje stošca kao i sam grafički prikaz


Primjer vjetrenjače

Za kraj, kombiniranjem različitih geometrijskih tijela možemo napraviti model vjetrenjače čiji je grafički model prikazan na videozapisu ispod

Python datoteku vjetrenjače možete preuzeti ovdje.

Literatura