Introduzione ad OpenGL

Cos'è OpenGL?

OpenGL (Open Graphics Library) è una potente libreria grafica che si pone il compito di interfacciarsi con l'hardware e fornire al programma client una serie di primitive, più o meno essenziali, per lo sviluppo di applicazioni nel campo del rendering tridimensionale. Queste primitive comprendono funzioni per la manipolazione dei pixel, per la proiezione di poligoni in 3D e per la gestione del movimento degli stessi, per la rappresentazione di luci e colori, per il texture mapping etc.
Il prefisso Open sta ad indicare che OpenGL è una architettura aperta, ciò significa che il suo sviluppo è curato non da una singola azienda ma da una associazione di industrie leader del settore (ATI, Compaq, IBM, nVidia, Hewlett-Packard, Silicon Graphics) che hanno dato vita all'ARB (OpenGL Architecture Review Board).
Questa organizzazione, nata nel 1992, ha il compito di sviluppare e standardizzare gli aggiornamenti di OpenGL, che oggi è giunta alla versione 1.5 (anche se in realtà la versione più diffusa è la 1.1).

Una delle peculiarità di OpenGL che la distingue immediatamente dalle sue rivali (ad esempio DirectX di Microsoft) è la portabilità. Infatti OGL è disponibile su tutte le piattaforme più diffuse, Unix, Linux, Windows, Mac, Solaris etc.
Questa estrema portabilità ha fatto si che anche i costruttori di hardware (nVidia per prima) si adeguassero ad essa e ora un gran numero di schede video moderne hanno la possibilità di eseguire la maggior parte delle funzioni OpenGL direttamente in hardware con un netto vantaggio in termini di prestazioni.
OGL è oggi una delle più valide e potenti librerie grafiche disponibili e lo dimostra il fatto che grandi Software House specializzate nel campo dei videogames l'hanno scelta per sviluppare i propri prodotti. Tra i titoli targati OpenGL troviamo Quake2, Quake3 e (di prossima uscita) Doom III della ID Software, Unreal Tournament 1 e 2 della Epic Games, oppure il mitico Half Life e tanti altri.

Ciò che è importante capire è che OGL e sostanzialmente una libreria grafica di basso livello e le sue funzioni sono relative all'utilizzo delle primitive fondamentali quali vertici e poligoni piuttosto che a modelli complessi la cui gestione viene di norma lasciata nelle mani del programmatore, garantendo così la massima flessibilità.
Naturalmente non mancano le possibilità di creare luci, trasparenze, riflessi e altri "effetti speciali" per trasformare una sterile rappresentazione di poligoni in una affascinante riproduzione della realtà.        

OpenGL, nelle sue distribuzioni, è sempre accompagnata dalla libreria GLU (GL Utility Library).
GLU è una libreria ausiliaria che contiene alcuni funzioni di più alto livello, utili ad esempio per la creazione di sfere o altri oggetti complessi ma anche per impostare particolari matrici di proiezione e per facilitare alcune operazioni al programma client. Normalmente, infatti, le funzioni della GLU contengono al loro interno routine basate sulle funzioni base di OGL.

Un'ulteriore libreria che è possibile scaricare (non è fornita di default) è la GLUT (GL Utility Toolkit), si tratta di un toolkit per la creazione delle finestre indipendente dal sistema operativo che permette, utilizzando solamente le funzioni di tale libreria, di scrivere programmi completi nascondendo le differenze di implementazione tra i gestori finestre dei vari sistemi operativi.
In realtà la libreria GLUT, per motivi di prestazioni e di qualità, viene poco utilizzata nelle applicazioni professionali che generalmente si occupano autonomamente di gestire la creazione delle finestre e l'acquisizione dell'input in base al sistema operativo sulle quali devono girare.

Per quanto riguarda la possibilità di utilizzare OGL nel proprio linguaggio preferito, nonostante essa sia stata sviluppata inizialmente per essere utilizzata attraverso il linguaggio C (a differenza di architetture più complesse come quella adottata dalle DirectX che si basa sul Component Object Model COM), è disponibile in un'ampia varietà di linguaggi tra i quali C++, Java, Delphi e il neonato C#.

Mentre le case sviluppatrici di videogiochi su sistemi Windows si dividono, così come tanti programmatori, sulla questione DirectX Vs OpenGL, in ambiente Linux, ancora piuttosto estraneo all'utilizzo come Desktop, OGL ha una netta predominanza. Molto probabilmente grazie alla sua larga diffusione e grazie al fatto che è sempre più supportata da diverse distribuzioni sarà alla base dello sviluppo del mercato dei videogames sui sistemi *nix.

Privacy Policy